Download

Preparation and basic stats

Genomic data set - chr22_GEUVADIS_358_continental

Loading the data

library(readr)
library(tidyr)
library(dplyr)
snps = read_tsv("/Users/igorhut/Documents/eQTL/Data/Voja_QTL_tools/SNP_voja.txt")

|===                                                                         |   3%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   4%    2 MB
|===                                                                         |   5%    2 MB
|===                                                                         |   5%    3 MB
|===                                                                         |   5%    3 MB
|===                                                                         |   5%    3 MB
|===                                                                         |   5%    3 MB
|===                                                                         |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   5%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|====                                                                        |   6%    3 MB
|=====                                                                       |   6%    3 MB
|=====                                                                       |   6%    3 MB
|=====                                                                       |   6%    3 MB
|=====                                                                       |   6%    3 MB
|=====                                                                       |   6%    3 MB
|=====                                                                       |   6%    3 MB
|=====                                                                       |   6%    4 MB
|=====                                                                       |   6%    4 MB
|=====                                                                       |   6%    4 MB
|=====                                                                       |   6%    4 MB
|=====                                                                       |   6%    4 MB
|=====                                                                       |   6%    4 MB
|=====                                                                       |   6%    4 MB
|=====                                                                       |   6%    4 MB
|=====                                                                       |   6%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|=====                                                                       |   7%    4 MB
|======                                                                      |   7%    4 MB
|======                                                                      |   7%    4 MB
|======                                                                      |   7%    4 MB
|======                                                                      |   7%    4 MB
|======                                                                      |   7%    4 MB
|======                                                                      |   7%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    4 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   8%    5 MB
|======                                                                      |   9%    5 MB
|======                                                                      |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |   9%    5 MB
|=======                                                                     |  10%    5 MB
|=======                                                                     |  10%    5 MB
|=======                                                                     |  10%    6 MB
|=======                                                                     |  10%    6 MB
|=======                                                                     |  10%    6 MB
|=======                                                                     |  10%    6 MB
|=======                                                                     |  10%    6 MB
|=======                                                                     |  10%    6 MB
|=======                                                                     |  10%    6 MB
|=======                                                                     |  10%    6 MB
|=======                                                                     |  10%    6 MB
|=======                                                                     |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  10%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|========                                                                    |  11%    6 MB
|=========                                                                   |  11%    6 MB
|=========                                                                   |  11%    6 MB
|=========                                                                   |  11%    7 MB
|=========                                                                   |  11%    7 MB
|=========                                                                   |  11%    7 MB
|=========                                                                   |  11%    7 MB
|=========                                                                   |  11%    7 MB
|=========                                                                   |  11%    7 MB
|=========                                                                   |  11%    7 MB
|=========                                                                   |  11%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|=========                                                                   |  12%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    7 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  13%    8 MB
|==========                                                                  |  14%    8 MB
|==========                                                                  |  14%    8 MB
|==========                                                                  |  14%    8 MB
|==========                                                                  |  14%    8 MB
|==========                                                                  |  14%    8 MB
|==========                                                                  |  14%    8 MB
|==========                                                                  |  14%    8 MB
|==========                                                                  |  14%    8 MB
|==========                                                                  |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  14%    8 MB
|===========                                                                 |  15%    8 MB
|===========                                                                 |  15%    8 MB
|===========                                                                 |  15%    8 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|===========                                                                 |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  15%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%    9 MB
|============                                                                |  16%   10 MB
|============                                                                |  16%   10 MB
|============                                                                |  16%   10 MB
|============                                                                |  16%   10 MB
|=============                                                               |  16%   10 MB
|=============                                                               |  16%   10 MB
|=============                                                               |  16%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  17%   10 MB
|=============                                                               |  18%   10 MB
|=============                                                               |  18%   10 MB
|=============                                                               |  18%   10 MB
|=============                                                               |  18%   10 MB
|=============                                                               |  18%   10 MB
|==============                                                              |  18%   10 MB
|==============                                                              |  18%   10 MB
|==============                                                              |  18%   10 MB
|==============                                                              |  18%   10 MB
|==============                                                              |  18%   10 MB
|==============                                                              |  18%   10 MB
|==============                                                              |  18%   10 MB
|==============                                                              |  18%   10 MB
|==============                                                              |  18%   10 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  18%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|==============                                                              |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  19%   11 MB
|===============                                                             |  20%   11 MB
|===============                                                             |  20%   11 MB
|===============                                                             |  20%   11 MB
|===============                                                             |  20%   11 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|===============                                                             |  20%   12 MB
|================                                                            |  20%   12 MB
|================                                                            |  20%   12 MB
|================                                                            |  20%   12 MB
|================                                                            |  20%   12 MB
|================                                                            |  20%   12 MB
|================                                                            |  20%   12 MB
|================                                                            |  20%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   12 MB
|================                                                            |  21%   13 MB
|================                                                            |  21%   13 MB
|================                                                            |  21%   13 MB
|================                                                            |  21%   13 MB
|================                                                            |  21%   13 MB
|================                                                            |  21%   13 MB
|================                                                            |  22%   13 MB
|================                                                            |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  22%   13 MB
|=================                                                           |  23%   13 MB
|=================                                                           |  23%   13 MB
|=================                                                           |  23%   13 MB
|=================                                                           |  23%   13 MB
|=================                                                           |  23%   13 MB
|=================                                                           |  23%   13 MB
|=================                                                           |  23%   13 MB
|=================                                                           |  23%   13 MB
|=================                                                           |  23%   13 MB
|=================                                                           |  23%   13 MB
|=================                                                           |  23%   13 MB
|=================                                                           |  23%   13 MB
|==================                                                          |  23%   13 MB
|==================                                                          |  23%   13 MB
|==================                                                          |  23%   13 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  23%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|==================                                                          |  24%   14 MB
|===================                                                         |  24%   14 MB
|===================                                                         |  24%   14 MB
|===================                                                         |  24%   14 MB
|===================                                                         |  24%   14 MB
|===================                                                         |  24%   14 MB
|===================                                                         |  24%   14 MB
|===================                                                         |  24%   14 MB
|===================                                                         |  24%   14 MB
|===================                                                         |  24%   14 MB
|===================                                                         |  24%   14 MB
|===================                                                         |  25%   14 MB
|===================                                                         |  25%   14 MB
|===================                                                         |  25%   14 MB
|===================                                                         |  25%   14 MB
|===================                                                         |  25%   14 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|===================                                                         |  25%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   15 MB
|====================                                                        |  26%   16 MB
|====================                                                        |  26%   16 MB
|====================                                                        |  26%   16 MB
|====================                                                        |  26%   16 MB
|====================                                                        |  26%   16 MB
|====================                                                        |  27%   16 MB
|====================                                                        |  27%   16 MB
|====================                                                        |  27%   16 MB
|====================                                                        |  27%   16 MB
|====================                                                        |  27%   16 MB
|====================                                                        |  27%   16 MB
|====================                                                        |  27%   16 MB
|====================                                                        |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  27%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   16 MB
|=====================                                                       |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  28%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|======================                                                      |  29%   17 MB
|=======================                                                     |  29%   17 MB
|=======================                                                     |  29%   17 MB
|=======================                                                     |  29%   17 MB
|=======================                                                     |  29%   17 MB
|=======================                                                     |  30%   17 MB
|=======================                                                     |  30%   17 MB
|=======================                                                     |  30%   17 MB
|=======================                                                     |  30%   17 MB
|=======================                                                     |  30%   17 MB
|=======================                                                     |  30%   17 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  30%   18 MB
|=======================                                                     |  31%   18 MB
|=======================                                                     |  31%   18 MB
|=======================                                                     |  31%   18 MB
|=======================                                                     |  31%   18 MB
|=======================                                                     |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   18 MB
|========================                                                    |  31%   19 MB
|========================                                                    |  31%   19 MB
|========================                                                    |  31%   19 MB
|========================                                                    |  31%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|========================                                                    |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  32%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   19 MB
|=========================                                                   |  33%   20 MB
|=========================                                                   |  33%   20 MB
|=========================                                                   |  33%   20 MB
|=========================                                                   |  33%   20 MB
|=========================                                                   |  33%   20 MB
|=========================                                                   |  33%   20 MB
|=========================                                                   |  33%   20 MB
|==========================                                                  |  33%   20 MB
|==========================                                                  |  33%   20 MB
|==========================                                                  |  33%   20 MB
|==========================                                                  |  33%   20 MB
|==========================                                                  |  33%   20 MB
|==========================                                                  |  33%   20 MB
|==========================                                                  |  33%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  34%   20 MB
|==========================                                                  |  35%   20 MB
|==========================                                                  |  35%   20 MB
|===========================                                                 |  35%   20 MB
|===========================                                                 |  35%   20 MB
|===========================                                                 |  35%   20 MB
|===========================                                                 |  35%   20 MB
|===========================                                                 |  35%   20 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  35%   21 MB
|===========================                                                 |  36%   21 MB
|===========================                                                 |  36%   21 MB
|===========================                                                 |  36%   21 MB
|===========================                                                 |  36%   21 MB
|===========================                                                 |  36%   21 MB
|===========================                                                 |  36%   21 MB
|===========================                                                 |  36%   21 MB
|===========================                                                 |  36%   21 MB
|===========================                                                 |  36%   21 MB
|===========================                                                 |  36%   21 MB
|===========================                                                 |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   21 MB
|============================                                                |  36%   22 MB
|============================                                                |  36%   22 MB
|============================                                                |  36%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|============================                                                |  37%   22 MB
|=============================                                               |  37%   22 MB
|=============================                                               |  37%   22 MB
|=============================                                               |  37%   22 MB
|=============================                                               |  37%   22 MB
|=============================                                               |  37%   22 MB
|=============================                                               |  37%   22 MB
|=============================                                               |  37%   22 MB
|=============================                                               |  37%   22 MB
|=============================                                               |  37%   22 MB
|=============================                                               |  37%   22 MB
|=============================                                               |  37%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   22 MB
|=============================                                               |  38%   23 MB
|=============================                                               |  38%   23 MB
|=============================                                               |  38%   23 MB
|=============================                                               |  38%   23 MB
|=============================                                               |  38%   23 MB
|=============================                                               |  38%   23 MB
|=============================                                               |  38%   23 MB
|=============================                                               |  38%   23 MB
|=============================                                               |  38%   23 MB
|=============================                                               |  38%   23 MB
|=============================                                               |  38%   23 MB
|==============================                                              |  38%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  39%   23 MB
|==============================                                              |  40%   23 MB
|==============================                                              |  40%   23 MB
|==============================                                              |  40%   23 MB
|==============================                                              |  40%   23 MB
|==============================                                              |  40%   23 MB
|==============================                                              |  40%   23 MB
|==============================                                              |  40%   23 MB
|==============================                                              |  40%   23 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  40%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|===============================                                             |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   24 MB
|================================                                            |  41%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|================================                                            |  42%   25 MB
|=================================                                           |  42%   25 MB
|=================================                                           |  42%   25 MB
|=================================                                           |  42%   25 MB
|=================================                                           |  42%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   25 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  43%   26 MB
|=================================                                           |  44%   26 MB
|=================================                                           |  44%   26 MB
|=================================                                           |  44%   26 MB
|=================================                                           |  44%   26 MB
|=================================                                           |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  44%   26 MB
|==================================                                          |  45%   26 MB
|==================================                                          |  45%   26 MB
|==================================                                          |  45%   26 MB
|==================================                                          |  45%   26 MB
|==================================                                          |  45%   26 MB
|==================================                                          |  45%   26 MB
|==================================                                          |  45%   26 MB
|==================================                                          |  45%   26 MB
|==================================                                          |  45%   26 MB
|==================================                                          |  45%   27 MB
|==================================                                          |  45%   27 MB
|==================================                                          |  45%   27 MB
|==================================                                          |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  45%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|===================================                                         |  46%   27 MB
|====================================                                        |  46%   27 MB
|====================================                                        |  46%   27 MB
|====================================                                        |  46%   27 MB
|====================================                                        |  46%   27 MB
|====================================                                        |  46%   27 MB
|====================================                                        |  46%   27 MB
|====================================                                        |  46%   27 MB
|====================================                                        |  46%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  47%   28 MB
|====================================                                        |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   28 MB
|=====================================                                       |  48%   29 MB
|=====================================                                       |  48%   29 MB
|=====================================                                       |  48%   29 MB
|=====================================                                       |  48%   29 MB
|=====================================                                       |  48%   29 MB
|=====================================                                       |  48%   29 MB
|=====================================                                       |  48%   29 MB
|=====================================                                       |  48%   29 MB
|=====================================                                       |  48%   29 MB
|=====================================                                       |  48%   29 MB
|=====================================                                       |  49%   29 MB
|=====================================                                       |  49%   29 MB
|=====================================                                       |  49%   29 MB
|=====================================                                       |  49%   29 MB
|=====================================                                       |  49%   29 MB
|=====================================                                       |  49%   29 MB
|=====================================                                       |  49%   29 MB
|=====================================                                       |  49%   29 MB
|=====================================                                       |  49%   29 MB
|=====================================                                       |  49%   29 MB
|=====================================                                       |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  49%   29 MB
|======================================                                      |  50%   29 MB
|======================================                                      |  50%   29 MB
|======================================                                      |  50%   29 MB
|======================================                                      |  50%   29 MB
|======================================                                      |  50%   29 MB
|======================================                                      |  50%   29 MB
|======================================                                      |  50%   29 MB
|======================================                                      |  50%   29 MB
|======================================                                      |  50%   29 MB
|======================================                                      |  50%   29 MB
|======================================                                      |  50%   30 MB
|======================================                                      |  50%   30 MB
|======================================                                      |  50%   30 MB
|======================================                                      |  50%   30 MB
|======================================                                      |  50%   30 MB
|======================================                                      |  50%   30 MB
|======================================                                      |  50%   30 MB
|======================================                                      |  50%   30 MB
|======================================                                      |  50%   30 MB
|======================================                                      |  50%   30 MB
|=======================================                                     |  50%   30 MB
|=======================================                                     |  50%   30 MB
|=======================================                                     |  50%   30 MB
|=======================================                                     |  50%   30 MB
|=======================================                                     |  50%   30 MB
|=======================================                                     |  50%   30 MB
|=======================================                                     |  50%   30 MB
|=======================================                                     |  50%   30 MB
|=======================================                                     |  50%   30 MB
|=======================================                                     |  50%   30 MB
|=======================================                                     |  50%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|=======================================                                     |  51%   30 MB
|========================================                                    |  51%   30 MB
|========================================                                    |  52%   30 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  52%   31 MB
|========================================                                    |  53%   31 MB
|========================================                                    |  53%   31 MB
|========================================                                    |  53%   31 MB
|========================================                                    |  53%   31 MB
|========================================                                    |  53%   31 MB
|========================================                                    |  53%   31 MB
|========================================                                    |  53%   31 MB
|========================================                                    |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   31 MB
|=========================================                                   |  53%   32 MB
|=========================================                                   |  53%   32 MB
|=========================================                                   |  53%   32 MB
|=========================================                                   |  53%   32 MB
|=========================================                                   |  53%   32 MB
|=========================================                                   |  53%   32 MB
|=========================================                                   |  53%   32 MB
|=========================================                                   |  53%   32 MB
|=========================================                                   |  53%   32 MB
|=========================================                                   |  53%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|=========================================                                   |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  54%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   32 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|==========================================                                  |  55%   33 MB
|===========================================                                 |  55%   33 MB
|===========================================                                 |  55%   33 MB
|===========================================                                 |  55%   33 MB
|===========================================                                 |  55%   33 MB
|===========================================                                 |  55%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  56%   33 MB
|===========================================                                 |  57%   33 MB
|===========================================                                 |  57%   34 MB
|===========================================                                 |  57%   34 MB
|===========================================                                 |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  57%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|============================================                                |  58%   34 MB
|=============================================                               |  58%   34 MB
|=============================================                               |  58%   34 MB
|=============================================                               |  58%   34 MB
|=============================================                               |  58%   34 MB
|=============================================                               |  58%   34 MB
|=============================================                               |  58%   34 MB
|=============================================                               |  58%   34 MB
|=============================================                               |  58%   34 MB
|=============================================                               |  58%   34 MB
|=============================================                               |  58%   35 MB
|=============================================                               |  58%   35 MB
|=============================================                               |  58%   35 MB
|=============================================                               |  58%   35 MB
|=============================================                               |  58%   35 MB
|=============================================                               |  58%   35 MB
|=============================================                               |  58%   35 MB
|=============================================                               |  58%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|=============================================                               |  59%   35 MB
|==============================================                              |  59%   35 MB
|==============================================                              |  59%   35 MB
|==============================================                              |  59%   35 MB
|==============================================                              |  59%   35 MB
|==============================================                              |  59%   35 MB
|==============================================                              |  59%   35 MB
|==============================================                              |  59%   35 MB
|==============================================                              |  59%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   35 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  60%   36 MB
|==============================================                              |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  61%   36 MB
|===============================================                             |  62%   36 MB
|===============================================                             |  62%   36 MB
|===============================================                             |  62%   36 MB
|===============================================                             |  62%   37 MB
|===============================================                             |  62%   37 MB
|===============================================                             |  62%   37 MB
|===============================================                             |  62%   37 MB
|===============================================                             |  62%   37 MB
|===============================================                             |  62%   37 MB
|===============================================                             |  62%   37 MB
|===============================================                             |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  62%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|================================================                            |  63%   37 MB
|=================================================                           |  63%   37 MB
|=================================================                           |  63%   37 MB
|=================================================                           |  63%   37 MB
|=================================================                           |  63%   37 MB
|=================================================                           |  63%   38 MB
|=================================================                           |  63%   38 MB
|=================================================                           |  63%   38 MB
|=================================================                           |  63%   38 MB
|=================================================                           |  63%   38 MB
|=================================================                           |  63%   38 MB
|=================================================                           |  63%   38 MB
|=================================================                           |  63%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|=================================================                           |  64%   38 MB
|==================================================                          |  64%   38 MB
|==================================================                          |  64%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   38 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  65%   39 MB
|==================================================                          |  66%   39 MB
|==================================================                          |  66%   39 MB
|==================================================                          |  66%   39 MB
|==================================================                          |  66%   39 MB
|==================================================                          |  66%   39 MB
|==================================================                          |  66%   39 MB
|==================================================                          |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  66%   39 MB
|===================================================                         |  67%   39 MB
|===================================================                         |  67%   39 MB
|===================================================                         |  67%   39 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|===================================================                         |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  67%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   40 MB
|====================================================                        |  68%   41 MB
|=====================================================                       |  68%   41 MB
|=====================================================                       |  68%   41 MB
|=====================================================                       |  68%   41 MB
|=====================================================                       |  68%   41 MB
|=====================================================                       |  68%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  69%   41 MB
|=====================================================                       |  70%   41 MB
|=====================================================                       |  70%   41 MB
|=====================================================                       |  70%   41 MB
|=====================================================                       |  70%   41 MB
|======================================================                      |  70%   41 MB
|======================================================                      |  70%   41 MB
|======================================================                      |  70%   41 MB
|======================================================                      |  70%   41 MB
|======================================================                      |  70%   41 MB
|======================================================                      |  70%   41 MB
|======================================================                      |  70%   41 MB
|======================================================                      |  70%   41 MB
|======================================================                      |  70%   41 MB
|======================================================                      |  70%   41 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  70%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|======================================================                      |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  71%   42 MB
|=======================================================                     |  72%   42 MB
|=======================================================                     |  72%   42 MB
|=======================================================                     |  72%   42 MB
|=======================================================                     |  72%   42 MB
|=======================================================                     |  72%   42 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|=======================================================                     |  72%   43 MB
|========================================================                    |  72%   43 MB
|========================================================                    |  72%   43 MB
|========================================================                    |  72%   43 MB
|========================================================                    |  72%   43 MB
|========================================================                    |  72%   43 MB
|========================================================                    |  72%   43 MB
|========================================================                    |  72%   43 MB
|========================================================                    |  72%   43 MB
|========================================================                    |  72%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   43 MB
|========================================================                    |  73%   44 MB
|========================================================                    |  73%   44 MB
|========================================================                    |  73%   44 MB
|========================================================                    |  73%   44 MB
|========================================================                    |  73%   44 MB
|========================================================                    |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  74%   44 MB
|=========================================================                   |  75%   44 MB
|=========================================================                   |  75%   44 MB
|=========================================================                   |  75%   44 MB
|=========================================================                   |  75%   44 MB
|=========================================================                   |  75%   44 MB
|=========================================================                   |  75%   44 MB
|=========================================================                   |  75%   44 MB
|=========================================================                   |  75%   44 MB
|=========================================================                   |  75%   44 MB
|=========================================================                   |  75%   44 MB
|==========================================================                  |  75%   44 MB
|==========================================================                  |  75%   44 MB
|==========================================================                  |  75%   44 MB
|==========================================================                  |  75%   44 MB
|==========================================================                  |  75%   44 MB
|==========================================================                  |  75%   44 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  75%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|==========================================================                  |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  76%   45 MB
|===========================================================                 |  77%   45 MB
|===========================================================                 |  77%   45 MB
|===========================================================                 |  77%   45 MB
|===========================================================                 |  77%   45 MB
|===========================================================                 |  77%   45 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|===========================================================                 |  77%   46 MB
|============================================================                |  77%   46 MB
|============================================================                |  77%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   46 MB
|============================================================                |  78%   47 MB
|============================================================                |  78%   47 MB
|============================================================                |  78%   47 MB
|============================================================                |  78%   47 MB
|============================================================                |  79%   47 MB
|============================================================                |  79%   47 MB
|============================================================                |  79%   47 MB
|============================================================                |  79%   47 MB
|============================================================                |  79%   47 MB
|============================================================                |  79%   47 MB
|============================================================                |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  79%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|=============================================================               |  80%   47 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  80%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|==============================================================              |  81%   48 MB
|===============================================================             |  81%   48 MB
|===============================================================             |  81%   48 MB
|===============================================================             |  81%   48 MB
|===============================================================             |  81%   48 MB
|===============================================================             |  81%   48 MB
|===============================================================             |  81%   48 MB
|===============================================================             |  82%   48 MB
|===============================================================             |  82%   48 MB
|===============================================================             |  82%   48 MB
|===============================================================             |  82%   48 MB
|===============================================================             |  82%   48 MB
|===============================================================             |  82%   48 MB
|===============================================================             |  82%   48 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  82%   49 MB
|===============================================================             |  83%   49 MB
|===============================================================             |  83%   49 MB
|===============================================================             |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   49 MB
|================================================================            |  83%   50 MB
|================================================================            |  83%   50 MB
|================================================================            |  83%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|================================================================            |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  84%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   50 MB
|=================================================================           |  85%   51 MB
|=================================================================           |  85%   51 MB
|=================================================================           |  85%   51 MB
|=================================================================           |  85%   51 MB
|==================================================================          |  85%   51 MB
|==================================================================          |  85%   51 MB
|==================================================================          |  85%   51 MB
|==================================================================          |  85%   51 MB
|==================================================================          |  85%   51 MB
|==================================================================          |  85%   51 MB
|==================================================================          |  85%   51 MB
|==================================================================          |  85%   51 MB
|==================================================================          |  85%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  86%   51 MB
|==================================================================          |  87%   51 MB
|===================================================================         |  87%   51 MB
|===================================================================         |  87%   51 MB
|===================================================================         |  87%   51 MB
|===================================================================         |  87%   51 MB
|===================================================================         |  87%   51 MB
|===================================================================         |  87%   51 MB
|===================================================================         |  87%   51 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  87%   52 MB
|===================================================================         |  88%   52 MB
|===================================================================         |  88%   52 MB
|===================================================================         |  88%   52 MB
|===================================================================         |  88%   52 MB
|===================================================================         |  88%   52 MB
|===================================================================         |  88%   52 MB
|===================================================================         |  88%   52 MB
|===================================================================         |  88%   52 MB
|===================================================================         |  88%   52 MB
|===================================================================         |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   52 MB
|====================================================================        |  88%   53 MB
|====================================================================        |  88%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|====================================================================        |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  89%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   53 MB
|=====================================================================       |  90%   54 MB
|=====================================================================       |  90%   54 MB
|=====================================================================       |  90%   54 MB
|=====================================================================       |  90%   54 MB
|=====================================================================       |  90%   54 MB
|=====================================================================       |  90%   54 MB
|=====================================================================       |  90%   54 MB
|=====================================================================       |  90%   54 MB
|=====================================================================       |  90%   54 MB
|======================================================================      |  90%   54 MB
|======================================================================      |  90%   54 MB
|======================================================================      |  90%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  91%   54 MB
|======================================================================      |  92%   54 MB
|======================================================================      |  92%   54 MB
|======================================================================      |  92%   54 MB
|======================================================================      |  92%   54 MB
|======================================================================      |  92%   54 MB
|======================================================================      |  92%   54 MB
|=======================================================================     |  92%   54 MB
|=======================================================================     |  92%   54 MB
|=======================================================================     |  92%   54 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  92%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|=======================================================================     |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   55 MB
|========================================================================    |  93%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|========================================================================    |  94%   56 MB
|=========================================================================   |  94%   56 MB
|=========================================================================   |  94%   56 MB
|=========================================================================   |  94%   56 MB
|=========================================================================   |  94%   56 MB
|=========================================================================   |  94%   56 MB
|=========================================================================   |  94%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   56 MB
|=========================================================================   |  95%   57 MB
|=========================================================================   |  95%   57 MB
|=========================================================================   |  95%   57 MB
|=========================================================================   |  95%   57 MB
|=========================================================================   |  95%   57 MB
|=========================================================================   |  95%   57 MB
|=========================================================================   |  95%   57 MB
|=========================================================================   |  95%   57 MB
|=========================================================================   |  95%   57 MB
|=========================================================================   |  95%   57 MB
|=========================================================================   |  95%   57 MB
|=========================================================================   |  96%   57 MB
|=========================================================================   |  96%   57 MB
|=========================================================================   |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  96%   57 MB
|==========================================================================  |  97%   57 MB
|==========================================================================  |  97%   57 MB
|==========================================================================  |  97%   57 MB
|==========================================================================  |  97%   57 MB
|==========================================================================  |  97%   57 MB
|==========================================================================  |  97%   57 MB
|==========================================================================  |  97%   57 MB
|==========================================================================  |  97%   57 MB
|==========================================================================  |  97%   57 MB
|==========================================================================  |  97%   57 MB
|==========================================================================  |  97%   58 MB
|==========================================================================  |  97%   58 MB
|==========================================================================  |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  97%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|=========================================================================== |  98%   58 MB
|============================================================================|  98%   58 MB
|============================================================================|  98%   58 MB
|============================================================================|  98%   58 MB
|============================================================================|  98%   58 MB
|============================================================================|  98%   58 MB
|============================================================================|  98%   58 MB
|============================================================================|  98%   58 MB
|============================================================================|  98%   58 MB
|============================================================================|  98%   58 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|============================================================================|  99%   59 MB
|=============================================================================| 100%   59 MB
expr = read_tsv("/Users/igorhut/Documents/eQTL/Data/Voja_QTL_tools/GE_voja.txt")

Basic stats

To get a basic idea of how many samples, genes and which genotyped positions are available in the data set, we’ll print out the “head” and dimensions of the loaded data sets. For the first 10 genes we’ll print out the mean expression levels + standard deviation. The same goes for the first 10 SNPs in the snps data frame.

head(expr)[1:12]
dim(expr)
[1] 608 359
head(snps)[1:12]
dim(snps)
[1] 85485   359
paste("Mean value of expression for gene ",expr$geneid[1:10]," is ", rowMeans(expr[1:10, -1]))
 [1] "Mean value of expression for gene  ENSG00000215270.3  is  1.37195382262709"   
 [2] "Mean value of expression for gene  ENSG00000237438.2  is  1.47948167480269"   
 [3] "Mean value of expression for gene  ENSG00000273203.1  is  0.658849616400615"  
 [4] "Mean value of expression for gene  ENSG00000273442.1  is  0.30150779514162"   
 [5] "Mean value of expression for gene  ENSG00000177663.9  is  2.76893802934637"   
 [6] "Mean value of expression for gene  ENSG00000183307.3  is  0.0330109958248743" 
 [7] "Mean value of expression for gene  ENSG00000069998.8  is  12.5103110517179"   
 [8] "Mean value of expression for gene  ENSG00000093072.11  is  9.5873076093771"   
 [9] "Mean value of expression for gene  ENSG00000099954.14  is  0.0257808687212151"
[10] "Mean value of expression for gene  ENSG00000182902.9  is  0.0559065276387877" 
paste("Standard deviation of expression for gene ", expr$geneid[1:10]," is ", t(apply(expr[1:10, -1], 1, sd)))
 [1] "Standard deviation of expression for gene  ENSG00000215270.3  is  0.472651252805272"  
 [2] "Standard deviation of expression for gene  ENSG00000237438.2  is  1.20578650765609"   
 [3] "Standard deviation of expression for gene  ENSG00000273203.1  is  0.516317432602619"  
 [4] "Standard deviation of expression for gene  ENSG00000273442.1  is  0.30999282888107"   
 [5] "Standard deviation of expression for gene  ENSG00000177663.9  is  0.663435616569955"  
 [6] "Standard deviation of expression for gene  ENSG00000183307.3  is  0.022646815889866"  
 [7] "Standard deviation of expression for gene  ENSG00000069998.8  is  2.92736948283107"   
 [8] "Standard deviation of expression for gene  ENSG00000093072.11  is  5.07079616962829"  
 [9] "Standard deviation of expression for gene  ENSG00000099954.14  is  0.0384475820388767"
[10] "Standard deviation of expression for gene  ENSG00000182902.9  is  0.0309177015985779" 
paste("Mean value for SNP ",snps$snipid[1:10]," is ", rowMeans(snps[1:10, -1]))
 [1] "Mean value for SNP  chr22_16051249  is  0.187150837988827"
 [2] "Mean value for SNP  chr22_16052080  is  0.251396648044693"
 [3] "Mean value for SNP  chr22_16052962  is  0.153631284916201"
 [4] "Mean value for SNP  chr22_16052986  is  0.108938547486034"
 [5] "Mean value for SNP  chr22_16053444  is  0.108938547486034"
 [6] "Mean value for SNP  chr22_16053659  is  1.4413407821229"  
 [7] "Mean value for SNP  chr22_16053791  is  0.53072625698324" 
 [8] "Mean value for SNP  chr22_16053862  is  0.187150837988827"
 [9] "Mean value for SNP  chr22_16053863  is  0.251396648044693"
[10] "Mean value for SNP  chr22_16054454  is  0.187150837988827"
paste("Standard deviation for SNP ", snps$snipid[1:10]," is ", t(apply(snps[1:10, -1], 1, sd)))
 [1] "Standard deviation for SNP  chr22_16051249  is  0.418282783518628"
 [2] "Standard deviation for SNP  chr22_16052080  is  0.434423220035923"
 [3] "Standard deviation for SNP  chr22_16052962  is  0.376294327742715"
 [4] "Standard deviation for SNP  chr22_16052986  is  0.320850570593205"
 [5] "Standard deviation for SNP  chr22_16053444  is  0.320850570593205"
 [6] "Standard deviation for SNP  chr22_16053659  is  0.635698421409098"
 [7] "Standard deviation for SNP  chr22_16053791  is  0.619844588756408"
 [8] "Standard deviation for SNP  chr22_16053862  is  0.418282783518628"
 [9] "Standard deviation for SNP  chr22_16053863  is  0.434423220035923"
[10] "Standard deviation for SNP  chr22_16054454  is  0.418282783518628"

MAF

Minor allele frequency (MAF) is a measure of the presence of an allele in a population. More precisely MAF refers to the frequency at which the second most common allele occurs in a given population. Every individual person has about 4.1-5 million bases in which he differs from the reference genome (ref). Some of those variants are common in a certain population, others not. In order to measure the “rareness”" of a specific variant (allele) MAF can be calculated. In case of single nucleotide polymorphisms there can be up to four different alleles in one position (A, C, G, T). Those alleles can be homozygous or heterozygous, when the maternal allele was different from the paternal allele at that position. SNPs in a population are always defined by the genomic position and by two alleles: The allele defined in the reference genome and one allele present in some individuals, but different from the reference sequence.

An example:

Spotting the differences.

Spotting the differences.

This individual has two SNPs, he is heterozygous in one of them and homozygous in the other. In eQTL analyses a SNP is always defined as a single allele being different from the reference. If in a population there are multiple different alleles for one position, they would be treated as independent entities of SNPs. Now we know that in eQTL analyses SNPs can only have two alleles: The reference and the alternative. Calculating MAF is essentially counting the presence of the alleles in a population and representing it as a percentage. Each individual can have 0, 1 or 2 times the alternative allele.

Example

The term MAF implies that the allele for which we return the measure has to be the minor (= less common) allele. This means that the MAF is smaller than 0.5 by definition.

So let’s now calculate the MAF for all SNPs among all individuals and correct the returned values so that the value is always given in respect to the minor allele. Then we’ll plot a histogram of the MAFs of all SNPs

library(MASS)

Attaching package: ‘MASS’

The following object is masked from ‘package:dplyr’:

    select
maf = rowMeans(snps[-1])/2
sum(maf > 0.5) # so there are 21130 alleses which are actually major alleles in this population sample
[1] 21130
# To ensure we actually get the MAF this needs to be inverted.
maf <- pmin(maf, 1-maf)
truehist(maf, main = "Histogram of MAF values.", col = "steelblue")
lines(density(maf), lty = 2, col = "darkorange", lwd = 3)

Filtering SNPs by MAF

In an eQTL study often a minimum MAF is required. Since MAF essentially reflects how often an allele has been observed in a population, it also defines how often the gene expression levels have been observed for heterozygous and homozygous alleles.

Example

Calculate the number of heterozygous and homozygous observations expected for SNPs with a MAF of 5%, 10% and 15% in a sample of 500 individuals given Hardy-Weinberg equilibrium. What are useful MAF thresholds for SNPs to include in an eQTL analysis?

p = c(0.05, 0.1, 0.15)
q = 1-p
# Calulate frequency of minor allele being present in homozygous and heterozygous state
f_hom = p^2
f_het = 2*p*q
# Expected number of observations in a sample size of 10000
sample_size = 500
round(f_hom * sample_size)
[1]  1  5 11
round(f_het * sample_size)
[1]  48  90 128

Gene expression profiling

Now that we have an idea of what is stored in the genotype data frame let’s take a look at the expression data. For eQTL analyses it is important for the gene expression to be normally distributed among samples, therefore RNA-seq data has to be transformed by, for example quantile normalization.

Let’s check the distribution of gene expression levels across samples for the first gene in our expr data frame.

gname = expr$geneid[1]
gname
[1] "ENSG00000215270.3"
truehist(as.numeric(filter(expr, geneid == gname)[-1]), main = paste("Gene expression profile for gene:",gname), xlab = "Expression level", col = "darkorange")
lines(density(as.numeric(filter(expr, geneid == gname)[-1])), lty = 2, col = "steelblue", lwd = 3)

Example

Now we’ll plot the expression levels of the first gene against the first SNP, 10th gene against the 10th SNP, 10th gene against the 1th SNP, as well as the 10th gene against the 6th SNP, depending on the genotypes of the samples by using simple dot plots. We’ll add a bit of random noise (jitter) to the genotype data to make it all look more comprehensible.

genotype = c("snp_1", "snp_10", "snp_1", "snp_6")
genes = c("gene_1", "gene_10", "gene_10", "gene_10")
par(mfrow=c(1,length(genotype)))
plot(jitter(as.numeric(snps[1,-1]), factor = 0.5), as.numeric(expr[1,-1]),
     xlab = genotype[1], ylab = genes[1], col = "steelblue",
     main = paste(genes[1], "vs", genotype[1]), xlim= c(-0.5,2.5), xaxt="n")
axis(1, at =c (0,1,2), labels = c("0", "1", "2"))
plot(jitter(as.numeric(snps[10,-1]), factor = 0.5), as.numeric(expr[10,-1]),
     xlab = genotype[2], ylab = genes[2], col = "steelblue",
     main = paste(genes[2], "vs", genotype[2]), xlim= c(-0.5,2.5), xaxt="n")
axis(1, at =c (0,1,2), labels = c("0", "1", "2"))
plot(jitter(as.numeric(snps[1,-1]), factor = 0.5), as.numeric(expr[10,-1]),
     xlab = genotype[3], ylab = genes[3], col = "steelblue",
     main = paste(genes[3], "vs", genotype[3]), xlim= c(-0.5,2.5), xaxt="n")
axis(1, at =c (0,1,2), labels = c("0", "1", "2"))
plot(jitter(as.numeric(snps[6,-1]), factor = 0.5), as.numeric(expr[10,-1]),
     xlab = genotype[4], ylab = genes[4], col = "steelblue",
     main = paste(genes[4], "vs", genotype[4]), xlim= c(-0.5,2.5), xaxt="n")
axis(1, at =c (0,1,2), labels = c("0", "1", "2"))

Let’s do a bit of data wrangling for easier downstream analysis and efficient plotting. Namely we’ll transpose our data frames so that we have variables, i.e. SNPs and expression levels as columns and samples as rows.

expr_trans = data.frame(t(expr[, -1]))
colnames(expr_trans)=t(expr[, 1])
expr_trans = tibble::rownames_to_column(expr_trans, "sample")
head(expr_trans)[1:10]
# and the same for genotype data
snps_trans = data.frame(t(snps[-1]))
colnames(snps_trans)=t(snps[, 1])
snps_trans = tibble::rownames_to_column(snps_trans, "sample")
head(snps_trans)[1:10]

Another convenient way to display gene expression values by genotype is as box plots. These provide a good, nonparametric, indication of the distributions. To convey a sense of the frequency of each genotype in the sample it is useful to also add points for each individual to the plot. Below is an example of how this might look for first ten SNP/gene pairs. This time we’ll use R’s ggplot2 library to generate visualization.

library(ggplot2)
#Reshape dataframes a bit for use with ggplot2
snps_long = tidyr::gather(snps_trans[, 1:5], snp, genotype, -sample)
expr_long = tidyr::gather(expr_trans[, 1:5], gene, expression, -sample)
head(snps_long)
head(expr_long)
data_long <- cbind(snps_long, expr_long["expression"])
data_long$genotype <- as.factor(data_long$genotype)
head(data_long)
ggplot(data_long, aes(genotype, expression)) +
  geom_jitter(colour = "darkorange",alpha = 0.3, width = 0.02) +
  geom_boxplot(alpha = 0.5, fill = "steelblue") +
  facet_wrap(~snp) 

# Let's do that for more SNPs and genes, just to see whether we could catch any
# visible correlations
snps_long = tidyr::gather(snps_trans[, 1:10], snp, genotype, -sample)
expr_long = tidyr::gather(expr_trans[, 1:10], gene, expression, -sample)
head(snps_long)
head(expr_long)
data_long <- cbind(snps_long, expr_long["expression"])
data_long$genotype <- as.factor(data_long$genotype)
head(data_long)
ggplot(data_long, aes(genotype, expression)) +
  geom_jitter(colour = "darkorange",alpha = 0.3, width = 0.02) +
  geom_boxplot(alpha = 0.5, fill = "steelblue", 
               position = position_dodge(width = 0)) +
  facet_wrap(~snp) 

Understanding the basics

This chapter should explain the basic ideas behind eQTL analyses. What we are doing here is not what one would do to run an actual eQTL analysis. Here we’ll try to explain how eQTL mapping works in general.

Linear regression of genotype on phenotype

The most common way of estimating the effect of a SNP on gene expression is by performing a linear regression of sample genotypes on sample gene expression levels. So to obtain estimates of the genotypic contribution to gene expression we fit a simple linear regression model of the form \(E_i = \beta_0 + \beta G_i + \epsilon\), where \(E_i\) is the vector of gene expression values for gene \(i\) and \(G_i\) is the genotype vector for the SNP \(i\). We are interested in the estimate for \(\beta\) which indicates the change in gene expression for each copy of the second allele

The p-value indicates the significance of the genetic component in the model. Let’s try that for gene 10 with SNP 1 and SNP 6.

lm_1_10 = lm(expr_trans[, 11] ~ snps_trans[, 2])
summary(lm_1_10)

Call:
lm(formula = expr_trans[, 11] ~ snps_trans[, 2])

Residuals:
      Min        1Q    Median        3Q       Max 
-0.056455 -0.021535 -0.003053  0.017321  0.145656 

Coefficients:
                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)      0.056455   0.001792  31.510   <2e-16 ***
snps_trans[, 2] -0.002931   0.003914  -0.749    0.455    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.03094 on 356 degrees of freedom
Multiple R-squared:  0.001572,  Adjusted R-squared:  -0.001232 
F-statistic: 0.5605 on 1 and 356 DF,  p-value: 0.4545
lm_6_10 = lm(expr_trans[, 11] ~ snps_trans[, 7])
summary(lm_6_10)

Call:
lm(formula = expr_trans[, 11] ~ snps_trans[, 7])

Residuals:
      Min        1Q    Median        3Q       Max 
-0.056641 -0.022338 -0.003267  0.017837  0.146785 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)     0.054012   0.004058   13.31   <2e-16 ***
snps_trans[, 7] 0.001315   0.002577    0.51     0.61    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.03095 on 356 degrees of freedom
Multiple R-squared:  0.0007307, Adjusted R-squared:  -0.002076 
F-statistic: 0.2603 on 1 and 356 DF,  p-value: 0.6102

This is the standard summary output from R for linear regressions. Since we are interested in eQTLs our main interest lies in the second line of “Coefficients”. What is stated as “Estimate” is the slope of the linear regression, which in eQTL terms is called “effect size” or already mentioned “beta”. In eQTL studies one normally compares thousands of genes for which each hundreds to thousands of SNPs have been tested. The common way to identify eQTLs is by their p-value. The p-value given here as (Pr(>|t|)) will later be referred to as raw p-value. It can be calculated in many different ways, here it is based on the t-value which is derived from the estimation of the coefficient and its standard error. For a nice explanation of the summary(lm) output check here.

It is obvious that these two models don’t catch any significant effect of explored SNPs and gene expression levels. In fact it is very hard to catch such effects by “manually” exploring real-world genomic data, usually containing tens or hundreds of thousands SNPs and hundreds or thousands gene expressions for large number of samples.

Hence for the sake of making a comprehensable example we’ll partially repeat the previous EDA process with a dummy, i.e. simulated data set, which can be found here

gt = read.table("/Users/igorhut/Documents/eQTL/jknightlab-eqtl-intro-e17c9f5/docker/data/simulated/sim_genotypes.tab", sep="\t",
header=TRUE, row.names = 1)
expr = read.table("/Users/igorhut/Documents/eQTL/jknightlab-eqtl-intro-e17c9f5/docker/data/simulated/sim_expression1.tab", sep="\t",
header=TRUE, row.names = 1)
head(gt)
head(expr)
dim(gt)
[1] 300  10
dim(expr)
[1] 300  10
# Calculate MAF and draw MAF histogram
maf <- colMeans(gt)/2
maf
      snp_1       snp_2       snp_3       snp_4       snp_5       snp_6       snp_7 
0.006666667 0.030000000 0.020000000 0.065000000 0.046666667 0.126666667 0.171666667 
      snp_8       snp_9      snp_10 
0.298333333 0.390000000 0.511666667 
maf <- pmin(maf, 1-maf)
maf
      snp_1       snp_2       snp_3       snp_4       snp_5       snp_6       snp_7 
0.006666667 0.030000000 0.020000000 0.065000000 0.046666667 0.126666667 0.171666667 
      snp_8       snp_9      snp_10 
0.298333333 0.390000000 0.488333333 
sum(maf > 0.5)
[1] 0
truehist(maf, main = "Histogram of MAF values.", col = "steelblue")
lines(density(maf), lty = 2, col = "darkorange", lwd = 3)
snps = c("snp_1", "snp_10", "snp_1")
genes = c("gene_1", "gene_10", "gene_10")
par(mfrow=c(1,length(snps)))

for (index in seq(length(snps))){
  genotype = gt[[snps[index]]]
  expression = expr[[genes[index]]]
  plot(jitter(genotype, factor = 0.4), expression,
  main=paste(snps[index], "vs", genes[index]), xlim= c(-0.5,2.5),
  xlab = "genotype", xaxt="n", col ="steelblue")
  axis(1, at=c(0,1,2), labels = c("0", "1", "2"))
}

#Reshape dataframes a bit for use with ggplot2
genoLong = tidyr::gather(gt, snp, genotype)
exprLong = tidyr::gather(expr, gene, expression)
dataLong = cbind(genoLong, exprLong["expression"])
dataLong$genotype = as.factor(dataLong$genotype)
ggplot(dataLong, aes(genotype, expression)) +
    geom_jitter(colour = "darkorange",alpha = 0.3, width = 0.2) +
    geom_boxplot(alpha=0.6, fill="steelblue",
                 position=position_dodge()) +
    facet_wrap(~snp) 

Let’s again try linear regression for gene 10 with snp 1 and snp 10

lm_1_10 = lm(expr[, "gene_10"]~ gt[, "snp_1"])
summary(lm_1_10)

Call:
lm(formula = expr[, "gene_10"] ~ gt[, "snp_1"])

Residuals:
    Min      1Q  Median      3Q     Max 
-4.5262 -1.1412  0.0577  1.1552  4.0071 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)    8.55324    0.09138  93.600   <2e-16 ***
gt[, "snp_1"] -1.07768    0.79138  -1.362    0.174    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.572 on 298 degrees of freedom
Multiple R-squared:  0.006185,  Adjusted R-squared:  0.00285 
F-statistic: 1.854 on 1 and 298 DF,  p-value: 0.1743
lm_10_10 = lm(expr[, "gene_10"] ~ gt[,"snp_10"])
summary(lm_10_10)

Call:
lm(formula = expr[, "gene_10"] ~ gt[, "snp_10"])

Residuals:
    Min      1Q  Median      3Q     Max 
-3.2863 -0.7161  0.0474  0.6658  2.4429 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)     6.88488    0.10941   62.93   <2e-16 ***
gt[, "snp_10"]  1.61627    0.08788   18.39   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.079 on 298 degrees of freedom
Multiple R-squared:  0.5317,    Adjusted R-squared:  0.5301 
F-statistic: 338.3 on 1 and 298 DF,  p-value: < 2.2e-16

Let’s plot these regression lines over scatter plots from before:

snps = c("snp_1", "snp_10", "snp_1")
genes = c("gene_1", "gene_10", "gene_10")
par(mfrow=c(1,length(snps)))
for (index in seq(length(snps))){
  genotype = gt[[snps[index]]]
  expression = expr[[genes[index]]]
  lm_result = lm(expression ~ genotype)
  plot(jitter(genotype, factor = 0.4), expression,
  main=paste(snps[index], "vs", genes[index]), xlim= c(-0.5,2.5),
  xlab = "genotype", xaxt="n", col ="steelblue")
  abline(lm_result, col="darkorange")
  axis(1, at=c(0,1,2), labels = c("0", "1", "2"))
  # Add p-values as text
  y_range = range(expression)
  text(x=1, y=y_range[1] + 0.95*diff(y_range), paste0("p=",
  format(summary(lm_result)$coefficients[2,4],
  scentific=TRUE, digits=2)))
  }

A nicer way to plot these results via ggplot2:

genoLong = tidyr::gather(gt, snp, genotype, snp_1, snp_10)
exprLong = tidyr::gather(expr, gene, expression, gene_1, gene_10)
dataLong = cbind(genoLong[,c("snp", "genotype")], exprLong[,c("gene", "expression")])
dataLong$comparison = paste(dataLong$snp, "vs", dataLong$gene)
dataLong$genotype = factor(dataLong$genotype)
ggplot(dataLong, aes(genotype, expression)) +
    geom_jitter(col="darkorange", position=position_jitter(width=0.25)) +
    geom_boxplot(outlier.size=0, alpha=0.6, fill="steelblue") +
    geom_smooth(method = 'lm',col="darkred", aes(group=1), se=FALSE) +
    facet_wrap(~comparison) 

Why should we care about MAF

fit <- mapply(function(e, g) lm(e ~ g), expr, gt, SIMPLIFY=FALSE)
betaHat <- sapply(fit, coef)[2,]
betaHat
   gene_1    gene_2    gene_3    gene_4    gene_5    gene_6    gene_7    gene_8    gene_9 
0.9416734 1.3518024 1.1324493 1.5005237 1.4329068 1.2928385 1.5106722 1.6050215 1.6038507 
  gene_10 
1.6162730 

We’ll use the R’s function confint to obtain 95% confidence intervals of the estimated SNP effects.

ci <- sapply(fit, confint, "g")
rownames(ci) <- c("lower", "upper")
ci
          gene_1    gene_2    gene_3   gene_4   gene_5   gene_6   gene_7   gene_8   gene_9
lower -0.1043169 0.8457378 0.5723167 1.156449 1.017273 1.026215 1.286452 1.412641 1.426662
upper  1.9876638 1.8578670 1.6925819 1.844598 1.848541 1.559462 1.734892 1.797402 1.781040
       gene_10
lower 1.443334
upper 1.789212

Now let’s plot confidence intervals for \(\hat{\beta_i}\) in respect to MAFs.

estimates = data.frame(Estimate=betaHat, t(ci), MAF=maf)
ggplot(estimates, aes(x=MAF)) + 
  geom_hline(yintercept=1.5, colour = "darkorange") +
  geom_hline(yintercept=0, colour = "darkred", linetype="longdash") +
  geom_errorbar(aes(ymin=lower, ymax=upper), colour = "steelblue") +
  geom_point(aes(y=Estimate), colour = "steelblue") 

In this example all resulting confidence intervals include the true value but intervals for small minor allele frequencies are large (and in one case this means that 0 is included in the CI). As one would expect the uncertainty in the estimate, as measured by the width of the confidence interval, decreases with increasing minor allele frequency. However, even at high MAF considerable uncertainty remains and point estimates are somewhat lacking in accuracy, overestimating the true effect.

Covariates

Many different factors can affect gene expression, such as age, sex, smoking habits, genetic mutations or environmental factors, such as nutrition, etc. The more factors can be described in the model, the more accurate it will be and the higher are chances to find more subtle genetic effects. Covariates therefore are features of samples which may describe effects on gene expression. In technical terms one covariate is therefore a vector of the same length as there are samples, e.g.: age. The examples before worked nicely, because it was simulated data without any covariates. Now we will be using data where covariates have been modelled additionally. Let’s see how linear regression models behave depending on inclusion of covaraiates. We’ll calculate the linear regression with and without the covariates for combination of gene 10 with snp 10.

expr_cov = read.table("/Users/igorhut/Documents/eQTL/jknightlab-eqtl-intro-e17c9f5/docker/data/simulated//sim_expression2.tab", sep="\t",
header=TRUE, row.names = 1)
covariates = read.table("/Users/igorhut/Documents/eQTL/jknightlab-eqtl-intro-e17c9f5/docker/data/simulated//sim_covariates.tab", sep="\t",
header=TRUE, row.names = 1)
head(expr_cov, 3)
head(covariates, 3)
dim(expr_cov)
[1] 300  10
dim(covariates)
[1] 300  20
lm_10_10 = lm(expr_cov[,"gene_10"] ~ gt[,"snp_10"])
summary(lm_10_10)

Call:
lm(formula = expr_cov[, "gene_10"] ~ gt[, "snp_10"])

Residuals:
     Min       1Q   Median       3Q      Max 
-21.8886  -4.4990  -0.2714   5.1006  20.2046 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)      5.8321     0.7492   7.784 1.16e-13 ***
gt[, "snp_10"]   2.9265     0.6018   4.863 1.87e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 7.391 on 298 degrees of freedom
Multiple R-squared:  0.07353,   Adjusted R-squared:  0.07042 
F-statistic: 23.65 on 1 and 298 DF,  p-value: 1.873e-06
lm_10_10_covs = lm(expr_cov[,"gene_10"] ~ gt[,"snp_10"] + as.matrix(covariates))
summary(lm_10_10_covs)

Call:
lm(formula = expr_cov[, "gene_10"] ~ gt[, "snp_10"] + as.matrix(covariates))

Residuals:
    Min      1Q  Median      3Q     Max 
-3.4494 -0.6804  0.0657  0.6722  2.5683 

Coefficients:
                            Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  6.82775    0.11393  59.928  < 2e-16 ***
gt[, "snp_10"]               1.65776    0.09172  18.074  < 2e-16 ***
as.matrix(covariates)var_1   2.50006    0.06416  38.967  < 2e-16 ***
as.matrix(covariates)var_2   2.24993    0.07045  31.935  < 2e-16 ***
as.matrix(covariates)var_3   2.21608    0.06487  34.163  < 2e-16 ***
as.matrix(covariates)var_4   2.20670    0.06667  33.097  < 2e-16 ***
as.matrix(covariates)var_5   2.18179    0.06466  33.740  < 2e-16 ***
as.matrix(covariates)var_6   1.90274    0.06336  30.031  < 2e-16 ***
as.matrix(covariates)var_7   1.87298    0.06779  27.631  < 2e-16 ***
as.matrix(covariates)var_8   1.67675    0.06664  25.163  < 2e-16 ***
as.matrix(covariates)var_9   1.64621    0.06771  24.311  < 2e-16 ***
as.matrix(covariates)var_10  1.55134    0.06076  25.531  < 2e-16 ***
as.matrix(covariates)var_11  1.48276    0.06598  22.475  < 2e-16 ***
as.matrix(covariates)var_12  1.31934    0.06802  19.396  < 2e-16 ***
as.matrix(covariates)var_13  1.23396    0.06564  18.799  < 2e-16 ***
as.matrix(covariates)var_14  1.14690    0.06383  17.967  < 2e-16 ***
as.matrix(covariates)var_15  1.13261    0.06344  17.854  < 2e-16 ***
as.matrix(covariates)var_16  0.96792    0.06647  14.562  < 2e-16 ***
as.matrix(covariates)var_17  0.75899    0.06875  11.039  < 2e-16 ***
as.matrix(covariates)var_18  0.70516    0.06483  10.876  < 2e-16 ***
as.matrix(covariates)var_19  0.64040    0.06584   9.727  < 2e-16 ***
as.matrix(covariates)var_20  0.50829    0.06822   7.450 1.18e-12 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.084 on 278 degrees of freedom
Multiple R-squared:  0.9814,    Adjusted R-squared:   0.98 
F-statistic: 699.3 on 21 and 278 DF,  p-value: < 2.2e-16

Let’s plot the results:

par(mfrow=c(1,2))
plot(jitter(gt[,"snp_10"], factor = 0.4), expr_cov[,"gene_10"],
  main="gene_10 vs snp_10", xlim= c(-0.5,2.5),
  xlab = "genotype", xaxt="n", col ="steelblue")
  abline(lm_10_10, col="darkorange", lwd = 2, lty = 2)
  axis(1, at=c(0,1,2), labels = c("0", "1", "2"))
  # Add p-values as text
  y_range = range(expr_cov[,"gene_10"])
  text(x=1, y=y_range[1] + 0.95*diff(y_range), paste0("p=",
  format(summary(lm_10_10)$coefficients[2,4],
  scentific=TRUE, digits=2)), col = "darkorange")
  
plot(jitter(gt[,"snp_10"], factor = 0.4), expr_cov[,"gene_10"],
  main="gene_10 vs snp_10 incl. cov.", xlim= c(-0.5,2.5),
  xlab = "genotype", xaxt="n", col ="steelblue")
  abline(lm_10_10_covs, col="darkorange", lwd = 2, lty = 2)
only using the first two of 22 regression coefficients
  axis(1, at=c(0,1,2), labels = c("0", "1", "2"))
  # Add p-values as text
  y_range = range(expr_cov[,"gene_10"])
  text(x=1, y=y_range[1] + 0.95*diff(y_range), paste0("p=",
  format(summary(lm_10_10_covs)$coefficients[2,4],
  scentific=TRUE, digits=2)), col = "darkorange")

NA

Using principle components as covariates

Further we will explore the use of principle components as covariates in linear models of gene expression to account for unknown sources of variation. Let’s use the data set from the previous exercise and include PC’s, as covariates, in the linear model instead of known covariates we used previously.

Check the data:

head(expr_cov, 3)
dim(expr_cov)
[1] 300  10

R provides the function prcomp for computing PCs. Like most standard R functions it expects data to be laid out with variables in columns and samples in rows, so we are good to go.

pca <- prcomp(expr_cov, center=TRUE, scale = TRUE)
head(pca$x, 3)
               PC1         PC2       PC3         PC4        PC5          PC6          PC7
sample_1 -2.276793 -0.06354526 0.3304429  0.11776561 0.07185696  0.202507384 -0.038418155
sample_2 -5.358711 -0.11632936 0.2518289 -0.02015748 0.06394395 -0.004416506 -0.001257329
sample_3  3.919988  0.06913189 0.2497241 -0.06144515 0.10165365  0.058176697 -0.001891389
                 PC8         PC9        PC10
sample_1 -0.10083580 -0.08100452  0.06052746
sample_2 -0.03820300 -0.08312656 -0.02748060
sample_3  0.09413981 -0.03593804 -0.09582196

As you can see, since we have 10 variables, we got 10 PCs in total. Let’s plot percentage of explained variance for all PCs.

library(factoextra)
plot(pca)

fviz_eig(pca, addlabels = TRUE)

The variance accounted for by each component is available through the sdev field of the prcomp return value:

pca$sdev
 [1] 3.14394553 0.15615397 0.14470210 0.13538318 0.12397628 0.10219570 0.08938052 0.08844315
 [9] 0.07362859 0.07006292
summary(pca)
Importance of components:
                          PC1     PC2     PC3     PC4     PC5     PC6     PC7     PC8
Standard deviation     3.1439 0.15615 0.14470 0.13538 0.12398 0.10220 0.08938 0.08844
Proportion of Variance 0.9884 0.00244 0.00209 0.00183 0.00154 0.00104 0.00080 0.00078
Cumulative Proportion  0.9884 0.99088 0.99297 0.99480 0.99634 0.99739 0.99818 0.99897
                           PC9    PC10
Standard deviation     0.07363 0.07006
Proportion of Variance 0.00054 0.00049
Cumulative Proportion  0.99951 1.00000
# or
sum(pca$sdev[1:5]^2)/sum(pca$sdev^2) # percentage of variace explained by first 5 PCs
[1] 0.9963415
pca$sdev[1]^2/sum(pca$sdev^2) # percentage of variance explained by the 1st PC
[1] 0.9884394

Since this is specifically modeled data, the first PC accounts for major part of variance. Let’s do modeling and see how the model behaves depending on inclusion of PCs.

# no PCs included
lm_9_9 = lm(expr_cov[,"gene_9"] ~ gt[,"snp_9"])
summary(lm_9_9)

Call:
lm(formula = expr_cov[, "gene_9"] ~ gt[, "snp_9"])

Residuals:
     Min       1Q   Median       3Q      Max 
-23.9702  -4.2002   0.0046   4.9352  20.0212 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)     7.3809     0.6442  11.457   <2e-16 ***
gt[, "snp_9"]   1.3727     0.6142   2.235   0.0262 *  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 7.459 on 298 degrees of freedom
Multiple R-squared:  0.01648,   Adjusted R-squared:  0.01318 
F-statistic: 4.994 on 1 and 298 DF,  p-value: 0.02617
# let's now include the 1st PC
lm_9_9_PC1 = lm(expr_cov[,"gene_9"] ~ gt[,"snp_9"] + as.numeric(pca$x[,1]))
summary(lm_9_9_PC1)

Call:
lm(formula = expr_cov[, "gene_9"] ~ gt[, "snp_9"] + as.numeric(pca$x[, 
    1]))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.36081 -0.34148 -0.02407  0.33541  1.39800 

Coefficients:
                        Estimate Std. Error t value Pr(>|t|)    
(Intercept)             7.410309   0.043561  170.11   <2e-16 ***
gt[, "snp_9"]           1.334989   0.041534   32.14   <2e-16 ***
as.numeric(pca$x[, 1]) -2.363213   0.009278 -254.71   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.5044 on 297 degrees of freedom
Multiple R-squared:  0.9955,    Adjusted R-squared:  0.9955 
F-statistic: 3.298e+04 on 2 and 297 DF,  p-value: < 2.2e-16

Let’s again plot the results:

par(mfrow=c(1,2))
plot(jitter(gt[,"snp_9"], factor = 0.4), expr_cov[,"gene_9"],
  main="gene_9 vs snp_9", xlim= c(-0.5,2.5),
  xlab = "genotype", xaxt="n", col ="steelblue")
  abline(lm_9_9, col="darkorange", lwd = 2, lty = 2)
  axis(1, at=c(0,1,2), labels = c("0", "1", "2"))
  # Add p-values as text
  y_range = range(expr_cov[,"gene_9"])
  text(x=1, y=y_range[1] + 0.95*diff(y_range), paste0("p=",
  format(summary(lm_9_9)$coefficients[2,4],
  scentific=TRUE, digits=2)), col = "darkorange")
  
plot(jitter(gt[,"snp_9"], factor = 0.4), expr_cov[,"gene_9"],
  main="gene_9 vs snp_9 incl. PC1", xlim= c(-0.5,2.5),
  xlab = "genotype", xaxt="n", col ="steelblue")
  abline(lm_9_9_PC1, col="darkorange", lwd = 2, lty = 2)
only using the first two of 3 regression coefficients
  axis(1, at=c(0,1,2), labels = c("0", "1", "2"))
  # Add p-values as text
  y_range = range(expr_cov[,"gene_9"])
  text(x=1, y=y_range[1] + 0.95*diff(y_range), paste0("p=",
  format(summary(lm_9_9_PC1)$coefficients[2,4],
  scentific=TRUE, digits=2)), col = "darkorange")

Large scale eQTL analysis

Now that we’ve covered the basics let’s focus on real world expression and genotyping data. We’ll be using R’s MatrixEQTL package which is designed for fast eQTL analysis on large genomic data sets. MatrixEQTL can test for association between genotype and gene expression using linear regression with either additive or ANOVA genotype effects. The models can include covariates to account for factors as population stratification, gender, and clinical variables. It also supports models with heteroscedastic and/or correlated errors, false discovery rate estimation and separate treatment of local (cis) and distant (trans) eQTLs. You can learn more about MatrixEQTL here.

Importing and preprocessing genotype and expression data

Genotype and expression data come in all sorts of flavours and preprocessing of this data needs to be done rather carefully. In this short introduction it is not possible to cover this topic in detail. Common input formats for genotypes are VCF, PLINK files, or even other custom files which give the genotype of each sample on all queried genomic positions. Expression data can also be made available in various formats depending on the underlying technology (RNAseq or expression micro array). Good portion of publicly available eQTL data sets are, still, from microarray experiments.

cis-eQTL and trans-eQTL analysis

To perform an eQTL analysis we don’t only need to know the genotype and gene expression values for every sample, but also the genomic positions of genes and SNPs. This is necessary to define which SNPs should be tested against which genes. For cis-eQTL analyses SNPs in proximity to the gene are chosen and for trans-eQTL analyses SNPs further away, or on different chromosomes, are taken into account. The window in cis-eQTL analysis is commonly chosen to be 500kb-1Mb measured from gene’s TSS.

Example

Now let’s go through an example of cis- trans-eQTL mapping with chr22_GEUVADIS_358_continental data.

# eQTL mapping, cis/trans, no pcs
  suppressMessages(library(MatrixEQTL))
  
  SNP_file_name <-  "/Users/igorhut/Documents/eQTL/Data/Voja_QTL_tools/SNP_voja.txt";
  snps_location_file_name <- "/Users/igorhut/Documents/eQTL/Data/Voja_QTL_tools/snpsloc_voja.txt";
  expression_file_name <- "/Users/igorhut/Documents/eQTL/Data/Voja_QTL_tools/GE_voja.txt";
  gene_location_file_name <- "/Users/igorhut/Documents/eQTL/Data/Voja_QTL_tools/geneloc_voja.txt";
  covariates_file_name <- "/Users/igorhut/Documents/eQTL/Data/Voja_QTL_tools/cov_voja.txt";
  cis_threshold <- 1e-5
  trans_threshold <- 1e-5
  cis_dist <- 1e6
  
  
  # Output file name
  output_file_name_cis = tempfile();
  output_file_name_tra = tempfile();
  # output_file_name_cis = "/Users/igorhut/Documents/eQTL/tools_comparison_R_proj/output_voja_cis_eqtls_1.txt";
  # output_file_name_tra = "/Users/igorhut/Documents/eQTL/tools_comparison_R_proj/output_voja_trans_eqtls_1.txt";
  
  ## Settings
  # Linear model to use, modelANOVA, modelLINEAR, or modelLINEAR_CROSS
  useModel = modelLINEAR; # modelANOVA, modelLINEAR, or modelLINEAR_CROSS
  # Only associations significant at this level will be saved
  pvOutputThreshold_cis = cis_threshold;
  pvOutputThreshold_tra = trans_threshold;
  
  # Set to character() for no covariates
  # covariates_file_name = character();
  
  # Error covariance matrix
  # Set to numeric() for identity.
  errorCovariance = numeric();
  
  # Distance for local gene-SNP pairs
  cisDist = cis_dist
  
  ## Load genotype data
  snps = SlicedData$new();
  snps$fileDelimiter = "\t"; # the TAB character
  snps$fileOmitCharacters = "NA"; # denote missing values;
  snps$fileSkipRows = 1; # one row of column labels
  snps$fileSkipColumns = 1; # one column of row labels
  snps$fileSliceSize = 2000; # read file in slices of 2,000 rows
  snps$LoadFile(SNP_file_name);
  
  ## Load gene expression data
  gene = SlicedData$new();
  gene$fileDelimiter = "\t"; # the TAB character
  gene$fileOmitCharacters = "NA"; # denote missing values;
  gene$fileSkipRows = 1; # one row of column labels
  gene$fileSkipColumns = 1; # one column of row labels
  gene$fileSliceSize = 2000; # read file in slices of 2,000 rows
  gene$LoadFile(expression_file_name);
  
  ## Load covariates
  cvrt = SlicedData$new();
  cvrt$fileDelimiter = "\t"; # the TAB character
  cvrt$fileOmitCharacters = "NA"; # denote missing values;
  cvrt$fileSkipRows = 1; # one row of column labels
  cvrt$fileSkipColumns = 1; # one column of row labels
  if(length(covariates_file_name)>0) {
    cvrt$LoadFile(covariates_file_name);
  }
  
  ## Run the analysis
  snpspos = read.table(snps_location_file_name, header = TRUE, stringsAsFactors = FALSE);
  genepos = read.table(gene_location_file_name, header = TRUE, stringsAsFactors = FALSE);
  
me = Matrix_eQTL_main(
  snps = snps,
  gene = gene,
  cvrt = cvrt,
  output_file_name = output_file_name_tra,
  pvOutputThreshold = pvOutputThreshold_tra,
  useModel = useModel,
  errorCovariance = errorCovariance,
  verbose = FALSE,
  output_file_name.cis = output_file_name_cis,
  pvOutputThreshold.cis = pvOutputThreshold_cis,
  snpspos = snpspos,
  genepos = genepos,
  cisDist = cisDist,
  pvalue.hist = TRUE,
  min.pv.by.genesnp = FALSE,
  noFDRsaveMemory = FALSE);
  
  me_qq = Matrix_eQTL_main(
    snps = snps,
    gene = gene,
    cvrt = cvrt,
    output_file_name = output_file_name_tra,
    pvOutputThreshold = pvOutputThreshold_tra,
    useModel = useModel,
    errorCovariance = errorCovariance,
    verbose = FALSE,
    output_file_name.cis = output_file_name_cis,
    pvOutputThreshold.cis = pvOutputThreshold_cis,
    snpspos = snpspos,
    genepos = genepos,
    cisDist = cisDist,
    pvalue.hist = "qqplot",
    min.pv.by.genesnp = FALSE,
    noFDRsaveMemory = FALSE)
  
  unlink(output_file_name_tra);
  unlink(output_file_name_cis);
  
  cat('Analysis done in: ', me$time.in.sec, ' seconds', '\n');
Analysis done in:  21.858  seconds 
  head(me$cis$eqtls)
  head(me$trans$eqtls)
  
  ## Make the histogram of local and distant p-values
  plot(me)

  
  ## Make the qq-plot of local and distant p-values
  plot(me_qq)  

Multiple testing correction

Whenever multiple statistical tests are performed, a multiple testing correction has to be performed. This is necessary because many hypotheses are tested. Therefore each calculated association p-value has to be corrected for multiple testing. MatrixEQTL does this for you automatically and returns the corrected p-value as a false discovery rate (FDR). Common thresholds on FDR are 5% or 10%.

Interpreting eQTL results

Linkage disequilibrium (LD)

Linkage disequilibrium (LD) is a very important effect that plays a big role in genetic association studies. It describes the fact that genetic variants are not always inherited independently due to recombination patterns during reproduction. SNPs in LD are inherited in similar patterns and therefore can explain gene expression in similar ways. This means that LD makes it harder for association studies to identify one single SNP being associated with altered gene expression. Also it is possible that the combination of SNPs (as a haplotype) causes differences in gene expression and not only one single SNP. Watch this video which explains the basics of LD.

Selecting eQTLs

Commonly one selects at most one associated SNP per gene. If there are many SNPs associated with a gene it is most likely that those SNPs are highly linked to each other (“in high LD”) and therefore they describe the same effect. There are still cases in which genes are regulated by different SNPs independently, this cannot be readily determined from the table produced by MatrixEQTL. Here we will not try to identify the independent lead eQTL signals.

Example

Let’s indentify which SNPs are (significantly) associated with which genes at a maximum FDR of 5% from the cis-eQTL results. We’ll print a table in which only the lead SNP per gene is given. Also we’ll add the MAF for every SNP in the table.

library(dplyr)
snp_values = read.table(SNP_file_name, row.names=1, header=TRUE)
snp_values = data.frame(snps = rownames(snp_values), snp_values, stringsAsFactors = FALSE)
top_eqtls = filter(me$cis$eqtls, FDR <= 0.05) %>% 
  arrange(FDR) %>% 
  distinct(gene, .keep_all = TRUE)
mafs = apply(as.matrix(snp_values[-1]),1,mean)/2
mafs = pmin(mafs, 1 - mafs)
mafs = data.frame(snps=names(mafs), maf = mafs)
top_eqtls = left_join(top_eqtls, mafs, by="snps")
head(top_eqtls)

Whenever multiple statistical tests are performed, a multiple testing correction needs to be performed. This is necessary in order to compensate for the errors which arise from multiple hypothesis testing. Therefore each calculated association p-value has to be corrected. MatrixEQTL does this for you automatically and returns the corrected p-value as a false discovery rate (FDR). Common thresholds on FDR are 5% or 10%.

Presenting eQTL analysis results

There are a few standard plots which are common in eQTL analyses. We already produced one of them earlier when we plotted gene expression versus genotype. This gives a visual insight in how clear the data was and what the linear regression actually detected.

Gene expression vs. genotype for the eqtl with the lowest association p-value

Let’s now plot gene expression vs. genotype for the eqtl with the lowest association FDR-value. Also we will add linear regression line for this isolated case.

# For this we also need df with expression data
gene_values = read.table(expression_file_name, row.names=1, header=TRUE)
gene_values = data.frame(gene = rownames(gene_values), gene_values, stringsAsFactors = FALSE)
top_snp = top_eqtls$snps[1]
top_gene = as.character(top_eqtls$gene[1])
top_snp_data = filter(snp_values, snps == top_snp)
top_gene_data = filter(gene_values, gene == top_gene)
plot_data = t(bind_rows(top_snp_data[-1], top_gene_data[-1]))
colnames(plot_data) = c("snp", "gene_expr")
plot_data = as.data.frame(plot_data)
plot_data$snp = as.factor(plot_data$snp)
head(plot_data)
lm_top = lm(plot_data[,"gene_expr"] ~ as.numeric(plot_data[,"snp"]))
summary(lm_top)

Call:
lm(formula = plot_data[, "gene_expr"] ~ as.numeric(plot_data[, 
    "snp"]))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.46029 -0.09368 -0.00761  0.08633  0.49462 

Coefficients:
                               Estimate Std. Error t value Pr(>|t|)    
(Intercept)                    -0.10229    0.02460  -4.158 4.02e-05 ***
as.numeric(plot_data[, "snp"])  0.30662    0.01096  27.974  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.1458 on 356 degrees of freedom
Multiple R-squared:  0.6873,    Adjusted R-squared:  0.6864 
F-statistic: 782.6 on 1 and 356 DF,  p-value: < 2.2e-16
plot(plot_data, col="steelblue", 
     main = paste0(top_gene, " vs ", top_snp))
abline(lm_top, col="darkorange", lwd = 2, lty = 2)
y_range = range(plot_data[,"gene_expr"])
  text(x=2, y=y_range[1] + 0.5*diff(y_range), paste0("p=",
  format(summary(lm_top)$coefficients[2,4],
  scentific=TRUE, digits=2)), col = "darkorange")

Manhanttan plots

Manhattan plots are a way to depict association p-values of multiple SNPs at once. They are also very common in GWAS. Manhattan plots are a rather convinient modality for interpretation of eQTL signals in terms of LD.

Let’s now generate a manhattan plot for gene ENSG00000172404.4, plotting the base-pair position on the x-axis and the \(-log_{10}(pvalue)\) of the SNP in the y axis. Manhattan plots usually depict all tested SNPs, not only the ones passing a certain p-value threshold. Therefore we’ll first obtain all the association p-values for all tested SNPs for gene ENSG00000172404.4.

gene_id = "ENSG00000172404.4"
gene_values = read.table(expression_file_name, row.names=1, header=TRUE)
single_gene_exp = SlicedData$new()
single_gene_exp$CreateFromMatrix(as.matrix(gene_values[gene_id, , drop=FALSE]))
single_gene_exp
SlicedData object. For more information type: ?SlicedData
Number of columns: 358 
Number of rows: 1 
Data is stored in 1 slices
Top left corner of the first slice (up to 10x10):
                    HG00096  HG00097   HG00099   HG00100   HG00101   HG00102   HG00103
ENSG00000172404.4 0.2518932 0.521835 0.8620147 0.5844244 0.5139019 0.9935348 0.7540972
                   HG00105   HG00106   HG00108
ENSG00000172404.4 1.102222 0.5453733 0.1863607
snpspos = read.table(snps_location_file_name, 
                     header = TRUE, 
                     stringsAsFactors = FALSE)
genepos = read.table(gene_location_file_name, 
                     header = TRUE, 
                     stringsAsFactors = FALSE)
single_cis_eqtl_res = Matrix_eQTL_main(snps, 
                                       single_gene_exp,
                                       verbose = FALSE,
                                       output_file_name.cis = NULL,
                                       output_file_name = NULL,
                                       pvOutputThreshold.cis=1, 
                                       snpspos = snpspos,
                                       genepos = genepos)
manh_data = merge(single_cis_eqtl_res$cis$eqtls, snpspos, by.x = "snps", by.y = "snipid")
manh_data = manh_data [,c("pos", "chr", "pvalue", "snps")]
head(manh_data)
# Plot the Manhattanplot
with(manh_data ,plot(pos, -log10(pvalue), xlab = "genomic position (bp)",
main=paste(gene_id, "associated SNPs")))
# Highlight the lead SNP
with(manh_data[which.min(manh_data$pvalue),,drop=FALSE] ,
points(pos, -log10(pvalue), pch=20, col="red"))
# Add a label to the lead SNP
with(manh_data[which.min(manh_data$pvalue),,drop=FALSE],
text(pos + diff(range(manh_data$pos))*0.2, -log10(pvalue), labels = snps))

Now produce manhattan plots for the top 3 cis-eQTL results and for the bottom 3 cis-eQTL in the top_eqtls matrix we have created earlier.

for (gene_id in top_eqtls$gene[c(1:3,(nrow(top_eqtls)-3):nrow(top_eqtls))]){
  print(gene_id)
  single_gene_exp = SlicedData$new()
  single_gene_exp$CreateFromMatrix(as.matrix(gene_values[gene_id,, drop=FALSE]))
  
  single_cis_eqtl_res = Matrix_eQTL_main(snps, single_gene_exp,
      output_file_name.cis = NULL,
      output_file_name = NULL,
      pvOutputThreshold.cis=1,
      verbose = FALSE,
      snpspos=snpspos,
      genepos=genepos)
  
  manh_data = merge(single_cis_eqtl_res$cis$eqtl, 
                    snpspos, 
                    by.x="snps", 
                    by.y = "snipid")
  manh_data =manh_data[,c("pos", "chr", "pvalue", "snps")]
  par(mfrow=c(1,1))
  # Plot the Manhattanplot
  with(manh_data ,plot(pos, -log10(pvalue), xlab = "genomic position (bp)",
  main=paste(gene_id, "associated SNPs")))
  # Highlight the lead SNP
  with(manh_data[which.min(manh_data$pvalue),,drop=FALSE] ,
  points(pos, -log10(pvalue), pch=20, col="red"))
  # Add a label to the lead SNP
  with(manh_data[which.min(manh_data$pvalue),,drop=FALSE],
  text(pos + diff(range(manh_data$pos))*0.2, -log10(pvalue), labels = snps))
  scan(stdin())
}
[1] "ENSG00000172404.4"
Read 0 items
[1] "ENSG00000100376.7"

Read 0 items
[1] "ENSG00000183172.8"

Read 0 items
[1] "ENSG00000273203.1"

Read 0 items
[1] "ENSG00000236850.4"

Read 0 items
[1] "ENSG00000182541.13"

Read 0 items
[1] "ENSG00000183785.10"

Read 0 items

Mostly there is a very clear eQTL signal visible, i.e. a distinct peak. Variants which are similar in “height” as the lead cis-eQTL SNP, but lower are most likely SNPs in LD with the lead SNP. In some cases horizontal lines (chunks) become visible which means that those variants are in very high LD among each other, i.e. they are usually inherited together. When variants are in very high LD (horizontal lines) their importance for gene expression cannot be distinguished. Other methods such as fine mapping try to use information like genome segmentation to break the LD blocks into smaller fractions of being more or less likely causal.

eQTL SNP distance from the TSS

Usually cis-eQTL SNPs are located around the transcription starting site (TSS) of the associated gene. Depending on the dataset there may be a slight bias to more associations upstream the TSS. When looking at the SNP positions relative to the TSS one has to take the strand of the gene into account, as up- and downstream are always relative to the strand the gene lies on.

Distance distribution of cis−eQTLs.

Distance distribution of cis−eQTLs.

Other (e)QTL calling algorithms

eQTL analysis in pharmacy and medicine

https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4140460/ http://onlinelibrary.wiley.com/doi/10.1111/jth.13639/full https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4479075/ https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4580986/

LS0tCnRpdGxlOiAiQmFzaWMgZVFUTCBhbmFseXNpcyBndWlkZSIKYXV0aG9yOiAiSWdvciBIdXQiCmRhdGU6ICIwNS8wMy8yMDE4IgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRoZW1lOiBmbGF0bHkKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6IDQKICAgIHRvY19mbG9hdDogeWVzCiAgaHRtbF9ub3RlYm9vazoKICAgIHRvYzogeWVzCiAgcGRmX2RvY3VtZW50OgogICAgdG9jOiB5ZXMKICAgIHRvY19kZXB0aDogNAotLS0KCgo8IS0tZG93bmxvYWQgZmFqbGEgLS0+IApgYGB7ciwgY29tbWVudCA9IE5BLCByZXN1bHRzID0gJ2FzaXMnLCBlY2hvID0gRn0KbGlicmFyeShiYXNlNjRlbmMpCgphZGRfZG93bmxvYWRfbGluayA9IGZ1bmN0aW9uKGZpbGUpewogIGNhdChzcHJpbnRmKHBhc3RlMCgiPGEgaHJlZj0nJXMnIHRhcmdldD0nX2JsYW5rJyBkb3dubG9hZD0nIixmaWxlLCInPgogICA8c3BhbiBjbGFzcz0nZ2x5cGhpY29uIGdseXBoaWNvbi1jbG91ZC1kb3dubG9hZCcgc3R5bGU9J2ZvbnQtc2l6ZToxLjJlbTsnPjwvc3Bhbj4gRG93bmxvYWQKICA8L2E+IiksCiAgIGJhc2U2NGVuYzo6ZGF0YVVSSShmaWxlID0gZmlsZSwgbWltZSA9ICd0ZXh0L3JtZCcpICAgICAgICAKICApKQp9CgphZGRfZG93bmxvYWRfbGluaygiYmFzaWNfZXF0bF9ndWlkZS5SbWQiKQpgYGAKCgojI1ByZXBhcmF0aW9uIGFuZCBiYXNpYyBzdGF0cwpHZW5vbWljIGRhdGEgc2V0IC0gY2hyMjJfR0VVVkFESVNfMzU4X2NvbnRpbmVudGFsCgoKIyMjI0xvYWRpbmcgdGhlIGRhdGEKYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmxpYnJhcnkocmVhZHIpCmxpYnJhcnkodGlkeXIpCmxpYnJhcnkoZHBseXIpCgpzbnBzID0gcmVhZF90c3YoIi9Vc2Vycy9pZ29yaHV0L0RvY3VtZW50cy9lUVRML0RhdGEvVm9qYV9RVExfdG9vbHMvU05QX3ZvamEudHh0IikKZXhwciA9IHJlYWRfdHN2KCIvVXNlcnMvaWdvcmh1dC9Eb2N1bWVudHMvZVFUTC9EYXRhL1ZvamFfUVRMX3Rvb2xzL0dFX3ZvamEudHh0IikKYGBgCgoKIyMjIEJhc2ljIHN0YXRzCgpUbyBnZXQgYSBiYXNpYyBpZGVhIG9mIGhvdyBtYW55IHNhbXBsZXMsIGdlbmVzIGFuZCB3aGljaCBnZW5vdHlwZWQgcG9zaXRpb25zIGFyZSBhdmFpbGFibGUgaW4gdGhlIGRhdGEgc2V0LCB3ZSdsbCBwcmludCBvdXQgdGhlICJoZWFkIiBhbmQgZGltZW5zaW9ucyBvZiB0aGUgbG9hZGVkIGRhdGEgc2V0cy4gRm9yIHRoZSBmaXJzdCAxMCBnZW5lcyB3ZSdsbCBwcmludCBvdXQgdGhlIG1lYW4gZXhwcmVzc2lvbiBsZXZlbHMgKyBzdGFuZGFyZCBkZXZpYXRpb24uIFRoZSBzYW1lIGdvZXMgZm9yIHRoZSBmaXJzdCAxMCBTTlBzIGluIHRoZSBgc25wc2AgZGF0YSBmcmFtZS4KCmBgYHtyfQpoZWFkKGV4cHIpWzE6MTJdCmRpbShleHByKQpoZWFkKHNucHMpWzE6MTJdCmRpbShzbnBzKQoKcGFzdGUoIk1lYW4gdmFsdWUgb2YgZXhwcmVzc2lvbiBmb3IgZ2VuZSAiLGV4cHIkZ2VuZWlkWzE6MTBdLCIgaXMgIiwgcm93TWVhbnMoZXhwclsxOjEwLCAtMV0pKQpwYXN0ZSgiU3RhbmRhcmQgZGV2aWF0aW9uIG9mIGV4cHJlc3Npb24gZm9yIGdlbmUgIiwgZXhwciRnZW5laWRbMToxMF0sIiBpcyAiLCB0KGFwcGx5KGV4cHJbMToxMCwgLTFdLCAxLCBzZCkpKQoKCnBhc3RlKCJNZWFuIHZhbHVlIGZvciBTTlAgIixzbnBzJHNuaXBpZFsxOjEwXSwiIGlzICIsIHJvd01lYW5zKHNucHNbMToxMCwgLTFdKSkKcGFzdGUoIlN0YW5kYXJkIGRldmlhdGlvbiBmb3IgU05QICIsIHNucHMkc25pcGlkWzE6MTBdLCIgaXMgIiwgdChhcHBseShzbnBzWzE6MTAsIC0xXSwgMSwgc2QpKSkKCmBgYAoKIyMjIE1BRgpNaW5vciBhbGxlbGUgZnJlcXVlbmN5IChNQUYpIGlzIGEgbWVhc3VyZSBvZiB0aGUgcHJlc2VuY2Ugb2YgYW4gYWxsZWxlIGluIGEgcG9wdWxhdGlvbi4gCk1vcmUgcHJlY2lzZWx5IE1BRiByZWZlcnMgdG8gdGhlIGZyZXF1ZW5jeSBhdCB3aGljaCB0aGUgc2Vjb25kIG1vc3QgY29tbW9uIGFsbGVsZSBvY2N1cnMgaW4gYSBnaXZlbiBwb3B1bGF0aW9uLgpFdmVyeSBpbmRpdmlkdWFsIHBlcnNvbiBoYXMgYWJvdXQgNC4xLTUgbWlsbGlvbiBiYXNlcyBpbiB3aGljaCBoZSBkaWZmZXJzIGZyb20gdGhlIHJlZmVyZW5jZSBnZW5vbWUgKFtyZWZdKGh0dHA6Ly93d3cubmF0dXJlLmNvbS9uYXR1cmUvam91cm5hbC92NTI2L243NTcxL2Z1bGwvbmF0dXJlMTUzOTMuaHRtbCNhLXR5cGljYWwtZ2Vub21lKSkuIFNvbWUgb2YgdGhvc2UgdmFyaWFudHMgYXJlIGNvbW1vbiBpbiBhIGNlcnRhaW4gcG9wdWxhdGlvbiwgb3RoZXJzIG5vdC4gSW4gb3JkZXIgdG8gbWVhc3VyZSB0aGUgInJhcmVuZXNzIiIgb2YgYSBzcGVjaWZpYyB2YXJpYW50IChhbGxlbGUpIE1BRiBjYW4gYmUgY2FsY3VsYXRlZC4gSW4gY2FzZSBvZiBzaW5nbGUgbnVjbGVvdGlkZSBwb2x5bW9ycGhpc21zIHRoZXJlIGNhbiBiZSB1cCB0byBmb3VyIGRpZmZlcmVudCBhbGxlbGVzIGluIG9uZSBwb3NpdGlvbiAoQSwgQywgRywgVCkuIFRob3NlIGFsbGVsZXMgY2FuIGJlIGhvbW96eWdvdXMgb3IgaGV0ZXJvenlnb3VzLCB3aGVuIHRoZSBtYXRlcm5hbCBhbGxlbGUgd2FzIGRpZmZlcmVudCBmcm9tIHRoZSBwYXRlcm5hbCBhbGxlbGUgYXQgdGhhdCBwb3NpdGlvbi4KU05QcyBpbiBhIHBvcHVsYXRpb24gYXJlIGFsd2F5cyBkZWZpbmVkIGJ5IHRoZSBnZW5vbWljIHBvc2l0aW9uIGFuZCBieSB0d28gYWxsZWxlczogVGhlIGFsbGVsZSBkZWZpbmVkIGluIHRoZSByZWZlcmVuY2UgZ2Vub21lIGFuZCBvbmUgYWxsZWxlIHByZXNlbnQgaW4gc29tZSBpbmRpdmlkdWFscywgYnV0IGRpZmZlcmVudCBmcm9tIHRoZSByZWZlcmVuY2Ugc2VxdWVuY2UuIAoKKkFuIGV4YW1wbGU6KgoKIVtTcG90dGluZyB0aGUgZGlmZmVyZW5jZXMuXShTTlBzLnBuZykKClRoaXMgaW5kaXZpZHVhbCBoYXMgdHdvIFNOUHMsIGhlIGlzIGhldGVyb3p5Z291cyBpbiBvbmUgb2YgdGhlbSBhbmQgaG9tb3p5Z291cyBpbiB0aGUgb3RoZXIuIEluIGVRVEwgYW5hbHlzZXMgYSBTTlAgaXMgYWx3YXlzIGRlZmluZWQgYXMgYSBzaW5nbGUgYWxsZWxlIGJlaW5nIGRpZmZlcmVudCBmcm9tIHRoZSByZWZlcmVuY2UuIElmIGluIGEgcG9wdWxhdGlvbiB0aGVyZSBhcmUgbXVsdGlwbGUgZGlmZmVyZW50IGFsbGVsZXMgZm9yIG9uZSBwb3NpdGlvbiwgdGhleSB3b3VsZCBiZSB0cmVhdGVkIGFzIGluZGVwZW5kZW50IGVudGl0aWVzIG9mIFNOUHMuCk5vdyB3ZSBrbm93IHRoYXQgaW4gZVFUTCBhbmFseXNlcyBTTlBzIGNhbiBvbmx5IGhhdmUgdHdvIGFsbGVsZXM6IFRoZSByZWZlcmVuY2UgYW5kIHRoZSBhbHRlcm5hdGl2ZS4KQ2FsY3VsYXRpbmcgTUFGIGlzIGVzc2VudGlhbGx5IGNvdW50aW5nIHRoZSBwcmVzZW5jZSBvZiB0aGUgYWxsZWxlcyBpbiBhIHBvcHVsYXRpb24gYW5kIHJlcHJlc2VudGluZyBpdCBhcyBhIHBlcmNlbnRhZ2UuIEVhY2ggaW5kaXZpZHVhbCBjYW4gaGF2ZSAwLCAxIG9yIDIgdGltZXMgdGhlIGFsdGVybmF0aXZlIGFsbGVsZS4KCiMjIyNFeGFtcGxlClRoZSB0ZXJtIE1BRiBpbXBsaWVzIHRoYXQgdGhlIGFsbGVsZSBmb3Igd2hpY2ggd2UgcmV0dXJuIHRoZSBtZWFzdXJlIGhhcyB0byBiZSB0aGUgbWlub3IgKD0gbGVzcyBjb21tb24pIGFsbGVsZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBNQUYgaXMgc21hbGxlciB0aGFuIDAuNSBieSBkZWZpbml0aW9uLgoKU28gbGV0J3Mgbm93IGNhbGN1bGF0ZSB0aGUgTUFGIGZvciBhbGwgU05QcyBhbW9uZyBhbGwgaW5kaXZpZHVhbHMgYW5kIGNvcnJlY3QgdGhlIHJldHVybmVkIHZhbHVlcyBzbyB0aGF0IHRoZSB2YWx1ZSBpcyBhbHdheXMgZ2l2ZW4gaW4gcmVzcGVjdCB0byB0aGUgbWlub3IgYWxsZWxlLiBUaGVuIHdlJ2xsIHBsb3QgYSBoaXN0b2dyYW0gb2YgdGhlIE1BRnMgb2YgYWxsIFNOUHMKCmBgYHtyfQpsaWJyYXJ5KE1BU1MpCm1hZiA9IHJvd01lYW5zKHNucHNbLTFdKS8yCnN1bShtYWYgPiAwLjUpICMgc28gdGhlcmUgYXJlIDIxMTMwIGFsbGVzZXMgd2hpY2ggYXJlIGFjdHVhbGx5IG1ham9yIGFsbGVsZXMgaW4gdGhpcyBwb3B1bGF0aW9uIHNhbXBsZQoKIyBUbyBlbnN1cmUgd2UgYWN0dWFsbHkgZ2V0IHRoZSBNQUYgdGhpcyBuZWVkcyB0byBiZSBpbnZlcnRlZC4KbWFmIDwtIHBtaW4obWFmLCAxLW1hZikKCnRydWVoaXN0KG1hZiwgbWFpbiA9ICJIaXN0b2dyYW0gb2YgTUFGIHZhbHVlcy4iLCBjb2wgPSAic3RlZWxibHVlIikKbGluZXMoZGVuc2l0eShtYWYpLCBsdHkgPSAyLCBjb2wgPSAiZGFya29yYW5nZSIsIGx3ZCA9IDMpCgpgYGAKCiMjI0ZpbHRlcmluZyBTTlBzIGJ5IE1BRgpJbiBhbiBlUVRMIHN0dWR5IG9mdGVuIGEgbWluaW11bSBNQUYgaXMgcmVxdWlyZWQuIFNpbmNlIE1BRiBlc3NlbnRpYWxseSByZWZsZWN0cyBob3cgb2Z0ZW4gYW4gYWxsZWxlIGhhcyBiZWVuIG9ic2VydmVkIGluIGEgcG9wdWxhdGlvbiwgaXQgYWxzbyBkZWZpbmVzIGhvdyBvZnRlbiB0aGUgZ2VuZSBleHByZXNzaW9uIGxldmVscyBoYXZlIGJlZW4gb2JzZXJ2ZWQgZm9yIGhldGVyb3p5Z291cyBhbmQgaG9tb3p5Z291cyBhbGxlbGVzLgoKIyMjI0V4YW1wbGUKQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgaGV0ZXJvenlnb3VzIGFuZCBob21venlnb3VzIG9ic2VydmF0aW9ucyBleHBlY3RlZCBmb3IgU05QcyB3aXRoIGEgTUFGIG9mIDUlLCAxMCUgYW5kIDE1JSBpbiBhIHNhbXBsZSBvZiA1MDAgaW5kaXZpZHVhbHMgZ2l2ZW4gW0hhcmR5LVdlaW5iZXJnIGVxdWlsaWJyaXVtXShodHRwczovL3d3dy5uYXR1cmUuY29tL3NjaXRhYmxlL2tub3dsZWRnZS9saWJyYXJ5L3RoZS1oYXJkeS13ZWluYmVyZy1wcmluY2lwbGUtMTMyMzU3MjQpLiBXaGF0IGFyZSB1c2VmdWwgTUFGIHRocmVzaG9sZHMgZm9yIFNOUHMgdG8gaW5jbHVkZSBpbiBhbiBlUVRMIGFuYWx5c2lzPwoKYGBge3J9CnAgPSBjKDAuMDUsIDAuMSwgMC4xNSkKcSA9IDEtcAojIENhbHVsYXRlIGZyZXF1ZW5jeSBvZiBtaW5vciBhbGxlbGUgYmVpbmcgcHJlc2VudCBpbiBob21venlnb3VzIGFuZCBoZXRlcm96eWdvdXMgc3RhdGUKZl9ob20gPSBwXjIKZl9oZXQgPSAyKnAqcQojIEV4cGVjdGVkIG51bWJlciBvZiBvYnNlcnZhdGlvbnMgaW4gYSBzYW1wbGUgc2l6ZSBvZiAxMDAwMApzYW1wbGVfc2l6ZSA9IDUwMApyb3VuZChmX2hvbSAqIHNhbXBsZV9zaXplKQpyb3VuZChmX2hldCAqIHNhbXBsZV9zaXplKQpgYGAKCiMjI0dlbmUgZXhwcmVzc2lvbiBwcm9maWxpbmcKTm93IHRoYXQgd2UgaGF2ZSBhbiBpZGVhIG9mIHdoYXQgaXMgc3RvcmVkIGluIHRoZSBnZW5vdHlwZSBkYXRhIGZyYW1lIGxldCdzIHRha2UgYSBsb29rIGF0IHRoZSBleHByZXNzaW9uIGRhdGEuIEZvciBlUVRMIGFuYWx5c2VzIGl0IGlzIGltcG9ydGFudCBmb3IgdGhlIGdlbmUgZXhwcmVzc2lvbiB0byBiZSBub3JtYWxseSBkaXN0cmlidXRlZCBhbW9uZyBzYW1wbGVzLCB0aGVyZWZvcmUgKlJOQS1zZXEqIGRhdGEgaGFzIHRvIGJlIHRyYW5zZm9ybWVkIGJ5LCBmb3IgZXhhbXBsZSBxdWFudGlsZSBub3JtYWxpemF0aW9uLgoKTGV0J3MgY2hlY2sgdGhlIGRpc3RyaWJ1dGlvbiBvZiBnZW5lIGV4cHJlc3Npb24gbGV2ZWxzIGFjcm9zcyBzYW1wbGVzIGZvciB0aGUgZmlyc3QgZ2VuZSBpbiBvdXIgYGV4cHJgIGRhdGEgZnJhbWUuCgpgYGB7cn0KZ25hbWUgPSBleHByJGdlbmVpZFsxXQpnbmFtZQp0cnVlaGlzdChhcy5udW1lcmljKGZpbHRlcihleHByLCBnZW5laWQgPT0gZ25hbWUpWy0xXSksIG1haW4gPSBwYXN0ZSgiR2VuZSBleHByZXNzaW9uIHByb2ZpbGUgZm9yIGdlbmU6IixnbmFtZSksIHhsYWIgPSAiRXhwcmVzc2lvbiBsZXZlbCIsIGNvbCA9ICJkYXJrb3JhbmdlIikKbGluZXMoZGVuc2l0eShhcy5udW1lcmljKGZpbHRlcihleHByLCBnZW5laWQgPT0gZ25hbWUpWy0xXSkpLCBsdHkgPSAyLCBjb2wgPSAic3RlZWxibHVlIiwgbHdkID0gMykKYGBgCgojIyMjRXhhbXBsZQpOb3cgd2UnbGwgcGxvdCB0aGUgZXhwcmVzc2lvbiBsZXZlbHMgb2YgdGhlIGZpcnN0IGdlbmUgYWdhaW5zdCB0aGUgZmlyc3QgU05QLCAxMHRoIGdlbmUgYWdhaW5zdCB0aGUgMTB0aCBTTlAsIDEwdGggZ2VuZSBhZ2FpbnN0IHRoZSAxdGggU05QLCBhcyB3ZWxsIGFzIHRoZSAxMHRoIGdlbmUgYWdhaW5zdCB0aGUgNnRoIFNOUCwgZGVwZW5kaW5nIG9uIHRoZSBnZW5vdHlwZXMgb2YgdGhlIHNhbXBsZXMgYnkgdXNpbmcgc2ltcGxlIGRvdCBwbG90cy4gV2UnbGwgYWRkIGEgYml0IG9mIHJhbmRvbSBub2lzZSAoaml0dGVyKSB0byB0aGUgZ2Vub3R5cGUgZGF0YSB0byBtYWtlIGl0IGFsbCBsb29rIG1vcmUgY29tcHJlaGVuc2libGUuCmBgYHtyfQpnZW5vdHlwZSA9IGMoInNucF8xIiwgInNucF8xMCIsICJzbnBfMSIsICJzbnBfNiIpCmdlbmVzID0gYygiZ2VuZV8xIiwgImdlbmVfMTAiLCAiZ2VuZV8xMCIsICJnZW5lXzEwIikKcGFyKG1mcm93PWMoMSxsZW5ndGgoZ2Vub3R5cGUpKSkKCnBsb3Qoaml0dGVyKGFzLm51bWVyaWMoc25wc1sxLC0xXSksIGZhY3RvciA9IDAuNSksIGFzLm51bWVyaWMoZXhwclsxLC0xXSksCiAgICAgeGxhYiA9IGdlbm90eXBlWzFdLCB5bGFiID0gZ2VuZXNbMV0sIGNvbCA9ICJzdGVlbGJsdWUiLAogICAgIG1haW4gPSBwYXN0ZShnZW5lc1sxXSwgInZzIiwgZ2Vub3R5cGVbMV0pLCB4bGltPSBjKC0wLjUsMi41KSwgeGF4dD0ibiIpCmF4aXMoMSwgYXQgPWMgKDAsMSwyKSwgbGFiZWxzID0gYygiMCIsICIxIiwgIjIiKSkKcGxvdChqaXR0ZXIoYXMubnVtZXJpYyhzbnBzWzEwLC0xXSksIGZhY3RvciA9IDAuNSksIGFzLm51bWVyaWMoZXhwclsxMCwtMV0pLAogICAgIHhsYWIgPSBnZW5vdHlwZVsyXSwgeWxhYiA9IGdlbmVzWzJdLCBjb2wgPSAic3RlZWxibHVlIiwKICAgICBtYWluID0gcGFzdGUoZ2VuZXNbMl0sICJ2cyIsIGdlbm90eXBlWzJdKSwgeGxpbT0gYygtMC41LDIuNSksIHhheHQ9Im4iKQpheGlzKDEsIGF0ID1jICgwLDEsMiksIGxhYmVscyA9IGMoIjAiLCAiMSIsICIyIikpCnBsb3Qoaml0dGVyKGFzLm51bWVyaWMoc25wc1sxLC0xXSksIGZhY3RvciA9IDAuNSksIGFzLm51bWVyaWMoZXhwclsxMCwtMV0pLAogICAgIHhsYWIgPSBnZW5vdHlwZVszXSwgeWxhYiA9IGdlbmVzWzNdLCBjb2wgPSAic3RlZWxibHVlIiwKICAgICBtYWluID0gcGFzdGUoZ2VuZXNbM10sICJ2cyIsIGdlbm90eXBlWzNdKSwgeGxpbT0gYygtMC41LDIuNSksIHhheHQ9Im4iKQpheGlzKDEsIGF0ID1jICgwLDEsMiksIGxhYmVscyA9IGMoIjAiLCAiMSIsICIyIikpCnBsb3Qoaml0dGVyKGFzLm51bWVyaWMoc25wc1s2LC0xXSksIGZhY3RvciA9IDAuNSksIGFzLm51bWVyaWMoZXhwclsxMCwtMV0pLAogICAgIHhsYWIgPSBnZW5vdHlwZVs0XSwgeWxhYiA9IGdlbmVzWzRdLCBjb2wgPSAic3RlZWxibHVlIiwKICAgICBtYWluID0gcGFzdGUoZ2VuZXNbNF0sICJ2cyIsIGdlbm90eXBlWzRdKSwgeGxpbT0gYygtMC41LDIuNSksIHhheHQ9Im4iKQpheGlzKDEsIGF0ID1jICgwLDEsMiksIGxhYmVscyA9IGMoIjAiLCAiMSIsICIyIikpCgoKYGBgCgpMZXQncyBkbyBhIGJpdCBvZiBkYXRhIHdyYW5nbGluZyBmb3IgZWFzaWVyIGRvd25zdHJlYW0gYW5hbHlzaXMgYW5kIGVmZmljaWVudCBwbG90dGluZy4gTmFtZWx5IHdlJ2xsIHRyYW5zcG9zZSBvdXIgZGF0YSBmcmFtZXMgc28gdGhhdCB3ZSBoYXZlIHZhcmlhYmxlcywgaS5lLiBTTlBzIGFuZCBleHByZXNzaW9uIGxldmVscyBhcyBjb2x1bW5zIGFuZCBzYW1wbGVzIGFzIHJvd3MuCmBgYHtyfQpleHByX3RyYW5zID0gZGF0YS5mcmFtZSh0KGV4cHJbLCAtMV0pKQpjb2xuYW1lcyhleHByX3RyYW5zKT10KGV4cHJbLCAxXSkKZXhwcl90cmFucyA9IHRpYmJsZTo6cm93bmFtZXNfdG9fY29sdW1uKGV4cHJfdHJhbnMsICJzYW1wbGUiKQpoZWFkKGV4cHJfdHJhbnMpWzE6MTBdCgojIGFuZCB0aGUgc2FtZSBmb3IgZ2Vub3R5cGUgZGF0YQpzbnBzX3RyYW5zID0gZGF0YS5mcmFtZSh0KHNucHNbLTFdKSkKY29sbmFtZXMoc25wc190cmFucyk9dChzbnBzWywgMV0pCnNucHNfdHJhbnMgPSB0aWJibGU6OnJvd25hbWVzX3RvX2NvbHVtbihzbnBzX3RyYW5zLCAic2FtcGxlIikKaGVhZChzbnBzX3RyYW5zKVsxOjEwXQoKYGBgCgpBbm90aGVyIGNvbnZlbmllbnQgd2F5IHRvIGRpc3BsYXkgZ2VuZSBleHByZXNzaW9uIHZhbHVlcyBieSBnZW5vdHlwZSBpcyBhcyBib3ggcGxvdHMuIFRoZXNlIHByb3ZpZGUgYSBnb29kLCBub25wYXJhbWV0cmljLCBpbmRpY2F0aW9uIG9mIHRoZSBkaXN0cmlidXRpb25zLiBUbyBjb252ZXkgYSBzZW5zZSBvZiB0aGUgZnJlcXVlbmN5IG9mIGVhY2ggZ2Vub3R5cGUgaW4gdGhlIHNhbXBsZSBpdCBpcyB1c2VmdWwgdG8gYWxzbyBhZGQgcG9pbnRzIGZvciBlYWNoIGluZGl2aWR1YWwgdG8gdGhlIHBsb3QuIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgaG93IHRoaXMgbWlnaHQgbG9vayBmb3IgZmlyc3QgdGVuIFNOUC9nZW5lIHBhaXJzLiBUaGlzIHRpbWUgd2UnbGwgdXNlIFIncyBgZ2dwbG90MmAgbGlicmFyeSB0byBnZW5lcmF0ZSB2aXN1YWxpemF0aW9uLiAKCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCgojUmVzaGFwZSBkYXRhZnJhbWVzIGEgYml0IGZvciB1c2Ugd2l0aCBnZ3Bsb3QyCnNucHNfbG9uZyA9IHRpZHlyOjpnYXRoZXIoc25wc190cmFuc1ssIDE6NV0sIHNucCwgZ2Vub3R5cGUsIC1zYW1wbGUpCmV4cHJfbG9uZyA9IHRpZHlyOjpnYXRoZXIoZXhwcl90cmFuc1ssIDE6NV0sIGdlbmUsIGV4cHJlc3Npb24sIC1zYW1wbGUpCmhlYWQoc25wc19sb25nKQpoZWFkKGV4cHJfbG9uZykKCmRhdGFfbG9uZyA8LSBjYmluZChzbnBzX2xvbmcsIGV4cHJfbG9uZ1siZXhwcmVzc2lvbiJdKQpkYXRhX2xvbmckZ2Vub3R5cGUgPC0gYXMuZmFjdG9yKGRhdGFfbG9uZyRnZW5vdHlwZSkKaGVhZChkYXRhX2xvbmcpCmdncGxvdChkYXRhX2xvbmcsIGFlcyhnZW5vdHlwZSwgZXhwcmVzc2lvbikpICsKICBnZW9tX2ppdHRlcihjb2xvdXIgPSAiZGFya29yYW5nZSIsYWxwaGEgPSAwLjMsIHdpZHRoID0gMC4wMikgKwogIGdlb21fYm94cGxvdChhbHBoYSA9IDAuNSwgZmlsbCA9ICJzdGVlbGJsdWUiKSArCiAgZmFjZXRfd3JhcCh+c25wKSAKCiMgTGV0J3MgZG8gdGhhdCBmb3IgbW9yZSBTTlBzIGFuZCBnZW5lcywganVzdCB0byBzZWUgd2hldGhlciB3ZSBjb3VsZCBjYXRjaCBhbnkKIyB2aXNpYmxlIGNvcnJlbGF0aW9ucwoKc25wc19sb25nID0gdGlkeXI6OmdhdGhlcihzbnBzX3RyYW5zWywgMToxMF0sIHNucCwgZ2Vub3R5cGUsIC1zYW1wbGUpCmV4cHJfbG9uZyA9IHRpZHlyOjpnYXRoZXIoZXhwcl90cmFuc1ssIDE6MTBdLCBnZW5lLCBleHByZXNzaW9uLCAtc2FtcGxlKQpoZWFkKHNucHNfbG9uZykKaGVhZChleHByX2xvbmcpCgpkYXRhX2xvbmcgPC0gY2JpbmQoc25wc19sb25nLCBleHByX2xvbmdbImV4cHJlc3Npb24iXSkKZGF0YV9sb25nJGdlbm90eXBlIDwtIGFzLmZhY3RvcihkYXRhX2xvbmckZ2Vub3R5cGUpCmhlYWQoZGF0YV9sb25nKQpnZ3Bsb3QoZGF0YV9sb25nLCBhZXMoZ2Vub3R5cGUsIGV4cHJlc3Npb24pKSArCiAgZ2VvbV9qaXR0ZXIoY29sb3VyID0gImRhcmtvcmFuZ2UiLGFscGhhID0gMC4zLCB3aWR0aCA9IDAuMDIpICsKICBnZW9tX2JveHBsb3QoYWxwaGEgPSAwLjUsIGZpbGwgPSAic3RlZWxibHVlIiwgCiAgICAgICAgICAgICAgIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwKSkgKwogIGZhY2V0X3dyYXAofnNucCkgCgpgYGAKCiMjIFVuZGVyc3RhbmRpbmcgdGhlIGJhc2ljcwpUaGlzIGNoYXB0ZXIgc2hvdWxkIGV4cGxhaW4gdGhlIGJhc2ljIGlkZWFzIGJlaGluZCBlUVRMIGFuYWx5c2VzLiBXaGF0IHdlIGFyZSBkb2luZyBoZXJlIGlzIG5vdCB3aGF0IG9uZSB3b3VsZCBkbyB0byBydW4gYW4gYWN0dWFsIGVRVEwgYW5hbHlzaXMuICBIZXJlIHdlJ2xsIHRyeSB0byBleHBsYWluIGhvdyBlUVRMIG1hcHBpbmcgd29ya3MgaW4gZ2VuZXJhbC4KCiMjI0xpbmVhciByZWdyZXNzaW9uIG9mIGdlbm90eXBlIG9uIHBoZW5vdHlwZQpUaGUgbW9zdCBjb21tb24gd2F5IG9mIGVzdGltYXRpbmcgdGhlIGVmZmVjdCBvZiBhIFNOUCBvbiBnZW5lIGV4cHJlc3Npb24gaXMgYnkgcGVyZm9ybWluZyBhIGxpbmVhciByZWdyZXNzaW9uIG9mIHNhbXBsZSBnZW5vdHlwZXMgb24gc2FtcGxlIGdlbmUgZXhwcmVzc2lvbiBsZXZlbHMuIFNvIHRvIG9idGFpbiBlc3RpbWF0ZXMgb2YgdGhlIGdlbm90eXBpYyBjb250cmlidXRpb24gdG8gZ2VuZSBleHByZXNzaW9uIHdlIGZpdCBhIHNpbXBsZSBsaW5lYXIgcmVncmVzc2lvbiBtb2RlbCBvZiB0aGUgZm9ybSAkRV9pID0gXGJldGFfMCArIFxiZXRhIEdfaSArIFxlcHNpbG9uJCwgd2hlcmUgJEVfaSQgaXMgdGhlIHZlY3RvciBvZiBnZW5lIGV4cHJlc3Npb24gdmFsdWVzIGZvciBnZW5lICRpJCBhbmQgJEdfaSQgaXMgdGhlIGdlbm90eXBlIHZlY3RvciBmb3IgdGhlIFNOUCAkaSQuIFdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZSBlc3RpbWF0ZSBmb3IgJFxiZXRhJCB3aGljaCBpbmRpY2F0ZXMgdGhlIGNoYW5nZSBpbiBnZW5lIGV4cHJlc3Npb24gZm9yIGVhY2ggY29weSBvZiB0aGUgc2Vjb25kIGFsbGVsZQoKVGhlIHAtdmFsdWUgaW5kaWNhdGVzIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhlIGdlbmV0aWMgY29tcG9uZW50IGluIHRoZSBtb2RlbC4gTGV04oCZcyB0cnkgdGhhdCBmb3IgZ2VuZSAxMCB3aXRoIFNOUCAxIGFuZCBTTlAgNi4KCmBgYHtyfQpsbV8xXzEwID0gbG0oZXhwcl90cmFuc1ssIDExXSB+IHNucHNfdHJhbnNbLCAyXSkKc3VtbWFyeShsbV8xXzEwKQoKbG1fNl8xMCA9IGxtKGV4cHJfdHJhbnNbLCAxMV0gfiBzbnBzX3RyYW5zWywgN10pCnN1bW1hcnkobG1fNl8xMCkKYGBgClRoaXMgaXMgdGhlIHN0YW5kYXJkIHN1bW1hcnkgb3V0cHV0IGZyb20gUiBmb3IgbGluZWFyIHJlZ3Jlc3Npb25zLiBTaW5jZSB3ZSBhcmUgaW50ZXJlc3RlZCBpbiBlUVRMcyBvdXIgbWFpbiBpbnRlcmVzdCBsaWVzIGluIHRoZSBzZWNvbmQgbGluZSBvZiDigJxDb2VmZmljaWVudHPigJ0uIFdoYXQgaXMgc3RhdGVkIGFzIOKAnEVzdGltYXRl4oCdIGlzIHRoZSBzbG9wZSBvZiB0aGUgbGluZWFyIHJlZ3Jlc3Npb24sIHdoaWNoIGluIGVRVEwgdGVybXMgaXMgY2FsbGVkIOKAnGVmZmVjdCBzaXpl4oCdIG9yIGFscmVhZHkgbWVudGlvbmVkICJiZXRhIi4gSW4gZVFUTCBzdHVkaWVzIG9uZSBub3JtYWxseSBjb21wYXJlcyB0aG91c2FuZHMgb2YgZ2VuZXMgZm9yIHdoaWNoIGVhY2ggaHVuZHJlZHMgdG8gdGhvdXNhbmRzIG9mIFNOUHMgaGF2ZSBiZWVuIHRlc3RlZC4gVGhlIGNvbW1vbiB3YXkgdG8gaWRlbnRpZnkgZVFUTHMgaXMgYnkgdGhlaXIgKnAtdmFsdWUqLiBUaGUgKnAtdmFsdWUqIGdpdmVuIGhlcmUgYXMgKihQcig+fHR8KSkqIHdpbGwgbGF0ZXIgYmUgcmVmZXJyZWQgdG8gYXMgcmF3ICpwLXZhbHVlKi4gSXQgY2FuIGJlIGNhbGN1bGF0ZWQgaW4gbWFueSBkaWZmZXJlbnQgd2F5cywgaGVyZSBpdCBpcyBiYXNlZCBvbiB0aGUgKnQtdmFsdWUqIHdoaWNoIGlzIGRlcml2ZWQgZnJvbSB0aGUgZXN0aW1hdGlvbiBvZiB0aGUgY29lZmZpY2llbnQgYW5kIGl0cyBzdGFuZGFyZCBlcnJvci4gRm9yIGEgbmljZSBleHBsYW5hdGlvbiBvZiB0aGUgc3VtbWFyeShsbSkgb3V0cHV0IGNoZWNrIFtoZXJlXShodHRwOi8vc3RhdHMuc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzUxMzUvaW50ZXJwcmV0YXRpb24tb2YtcnMtbG0tb3V0cHV0KS4KCkl0IGlzIG9idmlvdXMgdGhhdCB0aGVzZSB0d28gbW9kZWxzIGRvbid0IGNhdGNoIGFueSBzaWduaWZpY2FudCBlZmZlY3Qgb2YgZXhwbG9yZWQgU05QcyBhbmQgZ2VuZSBleHByZXNzaW9uIGxldmVscy4gSW4gZmFjdCBpdCBpcyB2ZXJ5IGhhcmQgdG8gY2F0Y2ggc3VjaCBlZmZlY3RzIGJ5ICJtYW51YWxseSIgZXhwbG9yaW5nIHJlYWwtd29ybGQgZ2Vub21pYyBkYXRhLCB1c3VhbGx5IGNvbnRhaW5pbmcgdGVucyBvciBodW5kcmVkcyBvZiB0aG91c2FuZHMgU05QcyBhbmQgaHVuZHJlZHMgb3IgdGhvdXNhbmRzIGdlbmUgZXhwcmVzc2lvbnMgZm9yIGxhcmdlIG51bWJlciBvZiBzYW1wbGVzLgoKSGVuY2UgZm9yIHRoZSBzYWtlIG9mIG1ha2luZyBhIGNvbXByZWhlbnNhYmxlIGV4YW1wbGUgd2UnbGwgcGFydGlhbGx5IHJlcGVhdCB0aGUgcHJldmlvdXMgRURBIHByb2Nlc3Mgd2l0aCBhIGR1bW15LCBpLmUuIHNpbXVsYXRlZCBkYXRhIHNldCwgd2hpY2ggY2FuIGJlIGZvdW5kIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vamtuaWdodGxhYi9lcXRsLWludHJvL3RyZWUvbWFzdGVyL2RvY2tlci9kYXRhL3NpbXVsYXRlZCkKCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpndCA9IHJlYWQudGFibGUoIi9Vc2Vycy9pZ29yaHV0L0RvY3VtZW50cy9lUVRML2prbmlnaHRsYWItZXF0bC1pbnRyby1lMTdjOWY1L2RvY2tlci9kYXRhL3NpbXVsYXRlZC9zaW1fZ2Vub3R5cGVzLnRhYiIsIHNlcD0iXHQiLApoZWFkZXI9VFJVRSwgcm93Lm5hbWVzID0gMSkKZXhwciA9IHJlYWQudGFibGUoIi9Vc2Vycy9pZ29yaHV0L0RvY3VtZW50cy9lUVRML2prbmlnaHRsYWItZXF0bC1pbnRyby1lMTdjOWY1L2RvY2tlci9kYXRhL3NpbXVsYXRlZC9zaW1fZXhwcmVzc2lvbjEudGFiIiwgc2VwPSJcdCIsCmhlYWRlcj1UUlVFLCByb3cubmFtZXMgPSAxKQoKaGVhZChndCkKaGVhZChleHByKQpkaW0oZ3QpCmRpbShleHByKQoKIyBDYWxjdWxhdGUgTUFGIGFuZCBkcmF3IE1BRiBoaXN0b2dyYW0KbWFmIDwtIGNvbE1lYW5zKGd0KS8yCm1hZgptYWYgPC0gcG1pbihtYWYsIDEtbWFmKQptYWYKc3VtKG1hZiA+IDAuNSkKdHJ1ZWhpc3QobWFmLCBtYWluID0gIkhpc3RvZ3JhbSBvZiBNQUYgdmFsdWVzLiIsIGNvbCA9ICJzdGVlbGJsdWUiKQpsaW5lcyhkZW5zaXR5KG1hZiksIGx0eSA9IDIsIGNvbCA9ICJkYXJrb3JhbmdlIiwgbHdkID0gMykKCgpzbnBzID0gYygic25wXzEiLCAic25wXzEwIiwgInNucF8xIikKZ2VuZXMgPSBjKCJnZW5lXzEiLCAiZ2VuZV8xMCIsICJnZW5lXzEwIikKcGFyKG1mcm93PWMoMSxsZW5ndGgoc25wcykpKQoKZm9yIChpbmRleCBpbiBzZXEobGVuZ3RoKHNucHMpKSl7CiAgZ2Vub3R5cGUgPSBndFtbc25wc1tpbmRleF1dXQogIGV4cHJlc3Npb24gPSBleHByW1tnZW5lc1tpbmRleF1dXQogIHBsb3Qoaml0dGVyKGdlbm90eXBlLCBmYWN0b3IgPSAwLjQpLCBleHByZXNzaW9uLAogIG1haW49cGFzdGUoc25wc1tpbmRleF0sICJ2cyIsIGdlbmVzW2luZGV4XSksIHhsaW09IGMoLTAuNSwyLjUpLAogIHhsYWIgPSAiZ2Vub3R5cGUiLCB4YXh0PSJuIiwgY29sID0ic3RlZWxibHVlIikKICBheGlzKDEsIGF0PWMoMCwxLDIpLCBsYWJlbHMgPSBjKCIwIiwgIjEiLCAiMiIpKQp9CgojUmVzaGFwZSBkYXRhZnJhbWVzIGEgYml0IGZvciB1c2Ugd2l0aCBnZ3Bsb3QyCmdlbm9Mb25nID0gdGlkeXI6OmdhdGhlcihndCwgc25wLCBnZW5vdHlwZSkKZXhwckxvbmcgPSB0aWR5cjo6Z2F0aGVyKGV4cHIsIGdlbmUsIGV4cHJlc3Npb24pCmRhdGFMb25nID0gY2JpbmQoZ2Vub0xvbmcsIGV4cHJMb25nWyJleHByZXNzaW9uIl0pCmRhdGFMb25nJGdlbm90eXBlID0gYXMuZmFjdG9yKGRhdGFMb25nJGdlbm90eXBlKQoKZ2dwbG90KGRhdGFMb25nLCBhZXMoZ2Vub3R5cGUsIGV4cHJlc3Npb24pKSArCiAgICBnZW9tX2ppdHRlcihjb2xvdXIgPSAiZGFya29yYW5nZSIsYWxwaGEgPSAwLjMsIHdpZHRoID0gMC4yKSArCiAgICBnZW9tX2JveHBsb3QoYWxwaGE9MC42LCBmaWxsPSJzdGVlbGJsdWUiLAogICAgICAgICAgICAgICAgIHBvc2l0aW9uPXBvc2l0aW9uX2RvZGdlKCkpICsKICAgIGZhY2V0X3dyYXAofnNucCkgCgoKYGBgCgpMZXTigJlzIGFnYWluIHRyeSBsaW5lYXIgcmVncmVzc2lvbiBmb3IgZ2VuZSAxMCB3aXRoIHNucCAxIGFuZCBzbnAgMTAKCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpsbV8xXzEwID0gbG0oZXhwclssICJnZW5lXzEwIl1+IGd0WywgInNucF8xIl0pCnN1bW1hcnkobG1fMV8xMCkKCmxtXzEwXzEwID0gbG0oZXhwclssICJnZW5lXzEwIl0gfiBndFssInNucF8xMCJdKQpzdW1tYXJ5KGxtXzEwXzEwKQoKYGBgCgpMZXQncyBwbG90IHRoZXNlIHJlZ3Jlc3Npb24gbGluZXMgb3ZlciBzY2F0dGVyIHBsb3RzIGZyb20gYmVmb3JlOgoKYGBge3J9CnNucHMgPSBjKCJzbnBfMSIsICJzbnBfMTAiLCAic25wXzEiKQpnZW5lcyA9IGMoImdlbmVfMSIsICJnZW5lXzEwIiwgImdlbmVfMTAiKQpwYXIobWZyb3c9YygxLGxlbmd0aChzbnBzKSkpCgpmb3IgKGluZGV4IGluIHNlcShsZW5ndGgoc25wcykpKXsKICBnZW5vdHlwZSA9IGd0W1tzbnBzW2luZGV4XV1dCiAgZXhwcmVzc2lvbiA9IGV4cHJbW2dlbmVzW2luZGV4XV1dCiAgbG1fcmVzdWx0ID0gbG0oZXhwcmVzc2lvbiB+IGdlbm90eXBlKQogIHBsb3Qoaml0dGVyKGdlbm90eXBlLCBmYWN0b3IgPSAwLjQpLCBleHByZXNzaW9uLAogIG1haW49cGFzdGUoc25wc1tpbmRleF0sICJ2cyIsIGdlbmVzW2luZGV4XSksIHhsaW09IGMoLTAuNSwyLjUpLAogIHhsYWIgPSAiZ2Vub3R5cGUiLCB4YXh0PSJuIiwgY29sID0ic3RlZWxibHVlIikKICBhYmxpbmUobG1fcmVzdWx0LCBjb2w9ImRhcmtvcmFuZ2UiKQogIGF4aXMoMSwgYXQ9YygwLDEsMiksIGxhYmVscyA9IGMoIjAiLCAiMSIsICIyIikpCiAgIyBBZGQgcC12YWx1ZXMgYXMgdGV4dAogIHlfcmFuZ2UgPSByYW5nZShleHByZXNzaW9uKQogIHRleHQoeD0xLCB5PXlfcmFuZ2VbMV0gKyAwLjk1KmRpZmYoeV9yYW5nZSksIHBhc3RlMCgicD0iLAogIGZvcm1hdChzdW1tYXJ5KGxtX3Jlc3VsdCkkY29lZmZpY2llbnRzWzIsNF0sCiAgc2NlbnRpZmljPVRSVUUsIGRpZ2l0cz0yKSkpCiAgfQpgYGAKCkEgbmljZXIgd2F5IHRvIHBsb3QgdGhlc2UgcmVzdWx0cyB2aWEgYGdncGxvdDJgOgpgYGB7ciwgbWVzc2FnZT1UUlVFLCB3YXJuaW5nPVRSVUV9Cmdlbm9Mb25nID0gdGlkeXI6OmdhdGhlcihndCwgc25wLCBnZW5vdHlwZSwgc25wXzEsIHNucF8xMCkKZXhwckxvbmcgPSB0aWR5cjo6Z2F0aGVyKGV4cHIsIGdlbmUsIGV4cHJlc3Npb24sIGdlbmVfMSwgZ2VuZV8xMCkKZGF0YUxvbmcgPSBjYmluZChnZW5vTG9uZ1ssYygic25wIiwgImdlbm90eXBlIildLCBleHByTG9uZ1ssYygiZ2VuZSIsICJleHByZXNzaW9uIildKQpkYXRhTG9uZyRjb21wYXJpc29uID0gcGFzdGUoZGF0YUxvbmckc25wLCAidnMiLCBkYXRhTG9uZyRnZW5lKQpkYXRhTG9uZyRnZW5vdHlwZSA9IGZhY3RvcihkYXRhTG9uZyRnZW5vdHlwZSkKCmdncGxvdChkYXRhTG9uZywgYWVzKGdlbm90eXBlLCBleHByZXNzaW9uKSkgKwogICAgZ2VvbV9qaXR0ZXIoY29sPSJkYXJrb3JhbmdlIiwgcG9zaXRpb249cG9zaXRpb25faml0dGVyKHdpZHRoPTAuMjUpKSArCiAgICBnZW9tX2JveHBsb3Qob3V0bGllci5zaXplPTAsIGFscGhhPTAuNiwgZmlsbD0ic3RlZWxibHVlIikgKwogICAgZ2VvbV9zbW9vdGgobWV0aG9kID0gJ2xtJyxjb2w9ImRhcmtyZWQiLCBhZXMoZ3JvdXA9MSksIHNlPUZBTFNFKSArCiAgICBmYWNldF93cmFwKH5jb21wYXJpc29uKSAKCgpgYGAKCiMjI1doeSBzaG91bGQgd2UgY2FyZSBhYm91dCBNQUYKCmBgYHtyfQpmaXQgPC0gbWFwcGx5KGZ1bmN0aW9uKGUsIGcpIGxtKGUgfiBnKSwgZXhwciwgZ3QsIFNJTVBMSUZZPUZBTFNFKQpiZXRhSGF0IDwtIHNhcHBseShmaXQsIGNvZWYpWzIsXQpiZXRhSGF0CmBgYApXZSdsbCB1c2UgdGhlIFIncyBmdW5jdGlvbiBgY29uZmludGAgdG8gb2J0YWluIDk1JSBjb25maWRlbmNlIGludGVydmFscyBvZiB0aGUgZXN0aW1hdGVkIFNOUCBlZmZlY3RzLgoKYGBge3J9CmNpIDwtIHNhcHBseShmaXQsIGNvbmZpbnQsICJnIikKcm93bmFtZXMoY2kpIDwtIGMoImxvd2VyIiwgInVwcGVyIikKY2kKYGBgCk5vdyBsZXQncyBwbG90IGNvbmZpZGVuY2UgaW50ZXJ2YWxzIGZvciAkXGhhdHtcYmV0YV9pfSQgaW4gcmVzcGVjdCB0byBNQUZzLgoKYGBge3J9CmVzdGltYXRlcyA9IGRhdGEuZnJhbWUoRXN0aW1hdGU9YmV0YUhhdCwgdChjaSksIE1BRj1tYWYpCmdncGxvdChlc3RpbWF0ZXMsIGFlcyh4PU1BRikpICsgCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTEuNSwgY29sb3VyID0gImRhcmtvcmFuZ2UiKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0PTAsIGNvbG91ciA9ICJkYXJrcmVkIiwgbGluZXR5cGU9ImxvbmdkYXNoIikgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW49bG93ZXIsIHltYXg9dXBwZXIpLCBjb2xvdXIgPSAic3RlZWxibHVlIikgKwogIGdlb21fcG9pbnQoYWVzKHk9RXN0aW1hdGUpLCBjb2xvdXIgPSAic3RlZWxibHVlIikgCmBgYAoKSW4gdGhpcyBleGFtcGxlIGFsbCByZXN1bHRpbmcgY29uZmlkZW5jZSBpbnRlcnZhbHMgaW5jbHVkZSB0aGUgdHJ1ZSB2YWx1ZSBidXQgaW50ZXJ2YWxzIGZvciBzbWFsbCBtaW5vciBhbGxlbGUgZnJlcXVlbmNpZXMgYXJlIGxhcmdlIChhbmQgaW4gb25lIGNhc2UgdGhpcyBtZWFucyB0aGF0IDAgaXMgaW5jbHVkZWQgaW4gdGhlIENJKS4gQXMgb25lIHdvdWxkIGV4cGVjdCB0aGUgdW5jZXJ0YWludHkgaW4gdGhlIGVzdGltYXRlLCBhcyBtZWFzdXJlZCBieSB0aGUgd2lkdGggb2YgdGhlIGNvbmZpZGVuY2UgaW50ZXJ2YWwsIGRlY3JlYXNlcyB3aXRoIGluY3JlYXNpbmcgbWlub3IgYWxsZWxlIGZyZXF1ZW5jeS4gSG93ZXZlciwgZXZlbiBhdCBoaWdoIE1BRiBjb25zaWRlcmFibGUgdW5jZXJ0YWludHkgcmVtYWlucyBhbmQgcG9pbnQgZXN0aW1hdGVzIGFyZSBzb21ld2hhdCBsYWNraW5nIGluIGFjY3VyYWN5LCBvdmVyZXN0aW1hdGluZyB0aGUgdHJ1ZSBlZmZlY3QuCgojIyNDb3ZhcmlhdGVzCk1hbnkgZGlmZmVyZW50IGZhY3RvcnMgY2FuIGFmZmVjdCBnZW5lIGV4cHJlc3Npb24sIHN1Y2ggYXMgYWdlLCBzZXgsIHNtb2tpbmcgaGFiaXRzLCBnZW5ldGljIG11dGF0aW9ucyBvciBlbnZpcm9ubWVudGFsIGZhY3RvcnMsIHN1Y2ggYXMgbnV0cml0aW9uLCBldGMuIFRoZSBtb3JlIGZhY3RvcnMgY2FuIGJlIGRlc2NyaWJlZCBpbiB0aGUgbW9kZWwsIHRoZSBtb3JlIGFjY3VyYXRlIGl0IHdpbGwgYmUgYW5kIHRoZSBoaWdoZXIgYXJlIGNoYW5jZXMgdG8gZmluZCBtb3JlIHN1YnRsZSBnZW5ldGljIGVmZmVjdHMuCkNvdmFyaWF0ZXMgdGhlcmVmb3JlIGFyZSBmZWF0dXJlcyBvZiBzYW1wbGVzIHdoaWNoIG1heSBkZXNjcmliZSBlZmZlY3RzIG9uIGdlbmUgZXhwcmVzc2lvbi4gSW4gdGVjaG5pY2FsIHRlcm1zIG9uZSBjb3ZhcmlhdGUgaXMgdGhlcmVmb3JlIGEgdmVjdG9yIG9mIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGVyZSBhcmUgc2FtcGxlcywgZS5nLjogYWdlLgpUaGUgZXhhbXBsZXMgYmVmb3JlIHdvcmtlZCBuaWNlbHksIGJlY2F1c2UgaXQgd2FzIHNpbXVsYXRlZCBkYXRhIHdpdGhvdXQgYW55IGNvdmFyaWF0ZXMuIE5vdyB3ZSB3aWxsIGJlIHVzaW5nIGRhdGEgd2hlcmUgY292YXJpYXRlcyBoYXZlIGJlZW4gbW9kZWxsZWQgYWRkaXRpb25hbGx5LiAKTGV0J3Mgc2VlIGhvdyBsaW5lYXIgcmVncmVzc2lvbiBtb2RlbHMgYmVoYXZlIGRlcGVuZGluZyBvbiBpbmNsdXNpb24gb2YgY292YXJhaWF0ZXMuIFdlJ2xsIGNhbGN1bGF0ZSB0aGUgbGluZWFyIHJlZ3Jlc3Npb24gd2l0aCBhbmQgd2l0aG91dCB0aGUgY292YXJpYXRlcyBmb3IgY29tYmluYXRpb24gb2YgZ2VuZSAxMCB3aXRoIHNucCAxMC4KCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpleHByX2NvdiA9IHJlYWQudGFibGUoIi9Vc2Vycy9pZ29yaHV0L0RvY3VtZW50cy9lUVRML2prbmlnaHRsYWItZXF0bC1pbnRyby1lMTdjOWY1L2RvY2tlci9kYXRhL3NpbXVsYXRlZC8vc2ltX2V4cHJlc3Npb24yLnRhYiIsIHNlcD0iXHQiLApoZWFkZXI9VFJVRSwgcm93Lm5hbWVzID0gMSkKY292YXJpYXRlcyA9IHJlYWQudGFibGUoIi9Vc2Vycy9pZ29yaHV0L0RvY3VtZW50cy9lUVRML2prbmlnaHRsYWItZXF0bC1pbnRyby1lMTdjOWY1L2RvY2tlci9kYXRhL3NpbXVsYXRlZC8vc2ltX2NvdmFyaWF0ZXMudGFiIiwgc2VwPSJcdCIsCmhlYWRlcj1UUlVFLCByb3cubmFtZXMgPSAxKQoKaGVhZChleHByX2NvdiwgMykKaGVhZChjb3ZhcmlhdGVzLCAzKQpkaW0oZXhwcl9jb3YpCmRpbShjb3ZhcmlhdGVzKQoKbG1fMTBfMTAgPSBsbShleHByX2NvdlssImdlbmVfMTAiXSB+IGd0Wywic25wXzEwIl0pCnN1bW1hcnkobG1fMTBfMTApCgpsbV8xMF8xMF9jb3ZzID0gbG0oZXhwcl9jb3ZbLCJnZW5lXzEwIl0gfiBndFssInNucF8xMCJdICsgYXMubWF0cml4KGNvdmFyaWF0ZXMpKQpzdW1tYXJ5KGxtXzEwXzEwX2NvdnMpCgoKYGBgCgpMZXQncyBwbG90IHRoZSByZXN1bHRzOgpgYGB7cn0KcGFyKG1mcm93PWMoMSwyKSkKCnBsb3Qoaml0dGVyKGd0Wywic25wXzEwIl0sIGZhY3RvciA9IDAuNCksIGV4cHJfY292WywiZ2VuZV8xMCJdLAogIG1haW49ImdlbmVfMTAgdnMgc25wXzEwIiwgeGxpbT0gYygtMC41LDIuNSksCiAgeGxhYiA9ICJnZW5vdHlwZSIsIHhheHQ9Im4iLCBjb2wgPSJzdGVlbGJsdWUiKQogIGFibGluZShsbV8xMF8xMCwgY29sPSJkYXJrb3JhbmdlIiwgbHdkID0gMiwgbHR5ID0gMikKICBheGlzKDEsIGF0PWMoMCwxLDIpLCBsYWJlbHMgPSBjKCIwIiwgIjEiLCAiMiIpKQogICMgQWRkIHAtdmFsdWVzIGFzIHRleHQKICB5X3JhbmdlID0gcmFuZ2UoZXhwcl9jb3ZbLCJnZW5lXzEwIl0pCiAgdGV4dCh4PTEsIHk9eV9yYW5nZVsxXSArIDAuOTUqZGlmZih5X3JhbmdlKSwgcGFzdGUwKCJwPSIsCiAgZm9ybWF0KHN1bW1hcnkobG1fMTBfMTApJGNvZWZmaWNpZW50c1syLDRdLAogIHNjZW50aWZpYz1UUlVFLCBkaWdpdHM9MikpLCBjb2wgPSAiZGFya29yYW5nZSIpCiAgCnBsb3Qoaml0dGVyKGd0Wywic25wXzEwIl0sIGZhY3RvciA9IDAuNCksIGV4cHJfY292WywiZ2VuZV8xMCJdLAogIG1haW49ImdlbmVfMTAgdnMgc25wXzEwIGluY2wuIGNvdi4iLCB4bGltPSBjKC0wLjUsMi41KSwKICB4bGFiID0gImdlbm90eXBlIiwgeGF4dD0ibiIsIGNvbCA9InN0ZWVsYmx1ZSIpCiAgYWJsaW5lKGxtXzEwXzEwX2NvdnMsIGNvbD0iZGFya29yYW5nZSIsIGx3ZCA9IDIsIGx0eSA9IDIpCiAgYXhpcygxLCBhdD1jKDAsMSwyKSwgbGFiZWxzID0gYygiMCIsICIxIiwgIjIiKSkKICAjIEFkZCBwLXZhbHVlcyBhcyB0ZXh0CiAgeV9yYW5nZSA9IHJhbmdlKGV4cHJfY292WywiZ2VuZV8xMCJdKQogIHRleHQoeD0xLCB5PXlfcmFuZ2VbMV0gKyAwLjk1KmRpZmYoeV9yYW5nZSksIHBhc3RlMCgicD0iLAogIGZvcm1hdChzdW1tYXJ5KGxtXzEwXzEwX2NvdnMpJGNvZWZmaWNpZW50c1syLDRdLAogIHNjZW50aWZpYz1UUlVFLCBkaWdpdHM9MikpLCBjb2wgPSAiZGFya29yYW5nZSIpCiAgCmBgYAoKIyMjIFVzaW5nIHByaW5jaXBsZSBjb21wb25lbnRzIGFzIGNvdmFyaWF0ZXMKRnVydGhlciB3ZSB3aWxsIGV4cGxvcmUgdGhlIHVzZSBvZiBwcmluY2lwbGUgY29tcG9uZW50cyBhcyBjb3ZhcmlhdGVzIGluIGxpbmVhciBtb2RlbHMgb2YgZ2VuZSBleHByZXNzaW9uIHRvIGFjY291bnQgZm9yIHVua25vd24gc291cmNlcyBvZiB2YXJpYXRpb24uIExldCdzIHVzZSB0aGUgZGF0YSBzZXQgZnJvbSB0aGUgcHJldmlvdXMgZXhlcmNpc2UgYW5kIGluY2x1ZGUgUEMncywgYXMgY292YXJpYXRlcywgaW4gdGhlIGxpbmVhciBtb2RlbCBpbnN0ZWFkIG9mIGtub3duIGNvdmFyaWF0ZXMgd2UgdXNlZCBwcmV2aW91c2x5LgoKQ2hlY2sgdGhlIGRhdGE6CmBgYHtyfQpoZWFkKGV4cHJfY292LCAzKQpkaW0oZXhwcl9jb3YpCgpgYGAKUiBwcm92aWRlcyB0aGUgZnVuY3Rpb24gYHByY29tcGAgZm9yIGNvbXB1dGluZyBQQ3MuIExpa2UgbW9zdCBzdGFuZGFyZCBSIGZ1bmN0aW9ucyBpdCBleHBlY3RzIGRhdGEgdG8gYmUgbGFpZCBvdXQgd2l0aCB2YXJpYWJsZXMgaW4gY29sdW1ucyBhbmQgc2FtcGxlcyBpbiByb3dzLCBzbyB3ZSBhcmUgZ29vZCB0byBnby4KCmBgYHtyfQpwY2EgPC0gcHJjb21wKGV4cHJfY292LCBjZW50ZXI9VFJVRSwgc2NhbGUgPSBUUlVFKQpoZWFkKHBjYSR4LCAzKQpgYGAKQXMgeW91IGNhbiBzZWUsIHNpbmNlIHdlIGhhdmUgMTAgdmFyaWFibGVzLCB3ZSBnb3QgMTAgUENzIGluIHRvdGFsLiBMZXQncyBwbG90IHBlcmNlbnRhZ2Ugb2YgZXhwbGFpbmVkIHZhcmlhbmNlIGZvciBhbGwgUENzLiAKCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpsaWJyYXJ5KGZhY3RvZXh0cmEpCnBsb3QocGNhKQpmdml6X2VpZyhwY2EsIGFkZGxhYmVscyA9IFRSVUUpCmBgYApUaGUgdmFyaWFuY2UgYWNjb3VudGVkIGZvciBieSBlYWNoIGNvbXBvbmVudCBpcyBhdmFpbGFibGUgdGhyb3VnaCB0aGUgYHNkZXZgIGZpZWxkIG9mIHRoZSBgcHJjb21wYCByZXR1cm4gdmFsdWU6CgpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KcGNhJHNkZXYKc3VtbWFyeShwY2EpCgojIG9yCnN1bShwY2Ekc2RldlsxOjVdXjIpL3N1bShwY2Ekc2Rldl4yKSAjIHBlcmNlbnRhZ2Ugb2YgdmFyaWFjZSBleHBsYWluZWQgYnkgZmlyc3QgNSBQQ3MKcGNhJHNkZXZbMV1eMi9zdW0ocGNhJHNkZXZeMikgIyBwZXJjZW50YWdlIG9mIHZhcmlhbmNlIGV4cGxhaW5lZCBieSB0aGUgMXN0IFBDCmBgYAoKU2luY2UgdGhpcyBpcyBzcGVjaWZpY2FsbHkgbW9kZWxlZCBkYXRhLCB0aGUgZmlyc3QgUEMgYWNjb3VudHMgZm9yIG1ham9yIHBhcnQgb2YgdmFyaWFuY2UuIExldCdzIGRvIG1vZGVsaW5nIGFuZCBzZWUgaG93IHRoZSBtb2RlbCBiZWhhdmVzIGRlcGVuZGluZyBvbiBpbmNsdXNpb24gb2YgUENzLgoKYGBge3J9CiMgbm8gUENzIGluY2x1ZGVkCmxtXzlfOSA9IGxtKGV4cHJfY292WywiZ2VuZV85Il0gfiBndFssInNucF85Il0pCnN1bW1hcnkobG1fOV85KQoKIyBsZXQncyBub3cgaW5jbHVkZSB0aGUgMXN0IFBDCmxtXzlfOV9QQzEgPSBsbShleHByX2NvdlssImdlbmVfOSJdIH4gZ3RbLCJzbnBfOSJdICsgYXMubnVtZXJpYyhwY2EkeFssMV0pKQpzdW1tYXJ5KGxtXzlfOV9QQzEpCmBgYApMZXQncyBhZ2FpbiBwbG90IHRoZSByZXN1bHRzOgpgYGB7cn0KcGFyKG1mcm93PWMoMSwyKSkKCnBsb3Qoaml0dGVyKGd0Wywic25wXzkiXSwgZmFjdG9yID0gMC40KSwgZXhwcl9jb3ZbLCJnZW5lXzkiXSwKICBtYWluPSJnZW5lXzkgdnMgc25wXzkiLCB4bGltPSBjKC0wLjUsMi41KSwKICB4bGFiID0gImdlbm90eXBlIiwgeGF4dD0ibiIsIGNvbCA9InN0ZWVsYmx1ZSIpCiAgYWJsaW5lKGxtXzlfOSwgY29sPSJkYXJrb3JhbmdlIiwgbHdkID0gMiwgbHR5ID0gMikKICBheGlzKDEsIGF0PWMoMCwxLDIpLCBsYWJlbHMgPSBjKCIwIiwgIjEiLCAiMiIpKQogICMgQWRkIHAtdmFsdWVzIGFzIHRleHQKICB5X3JhbmdlID0gcmFuZ2UoZXhwcl9jb3ZbLCJnZW5lXzkiXSkKICB0ZXh0KHg9MSwgeT15X3JhbmdlWzFdICsgMC45NSpkaWZmKHlfcmFuZ2UpLCBwYXN0ZTAoInA9IiwKICBmb3JtYXQoc3VtbWFyeShsbV85XzkpJGNvZWZmaWNpZW50c1syLDRdLAogIHNjZW50aWZpYz1UUlVFLCBkaWdpdHM9MikpLCBjb2wgPSAiZGFya29yYW5nZSIpCiAgCnBsb3Qoaml0dGVyKGd0Wywic25wXzkiXSwgZmFjdG9yID0gMC40KSwgZXhwcl9jb3ZbLCJnZW5lXzkiXSwKICBtYWluPSJnZW5lXzkgdnMgc25wXzkgaW5jbC4gUEMxIiwgeGxpbT0gYygtMC41LDIuNSksCiAgeGxhYiA9ICJnZW5vdHlwZSIsIHhheHQ9Im4iLCBjb2wgPSJzdGVlbGJsdWUiKQogIGFibGluZShsbV85XzlfUEMxLCBjb2w9ImRhcmtvcmFuZ2UiLCBsd2QgPSAyLCBsdHkgPSAyKQogIGF4aXMoMSwgYXQ9YygwLDEsMiksIGxhYmVscyA9IGMoIjAiLCAiMSIsICIyIikpCiAgIyBBZGQgcC12YWx1ZXMgYXMgdGV4dAogIHlfcmFuZ2UgPSByYW5nZShleHByX2NvdlssImdlbmVfOSJdKQogIHRleHQoeD0xLCB5PXlfcmFuZ2VbMV0gKyAwLjk1KmRpZmYoeV9yYW5nZSksIHBhc3RlMCgicD0iLAogIGZvcm1hdChzdW1tYXJ5KGxtXzlfOV9QQzEpJGNvZWZmaWNpZW50c1syLDRdLAogIHNjZW50aWZpYz1UUlVFLCBkaWdpdHM9MikpLCBjb2wgPSAiZGFya29yYW5nZSIpCmBgYAoKIyMgTGFyZ2Ugc2NhbGUgZVFUTCBhbmFseXNpcwoKTm93IHRoYXQgd2UndmUgY292ZXJlZCB0aGUgYmFzaWNzIGxldCdzIGZvY3VzIG9uIHJlYWwgd29ybGQgZXhwcmVzc2lvbiBhbmQgZ2Vub3R5cGluZyBkYXRhLiBXZSdsbCBiZSB1c2luZyBSJ3MgYE1hdHJpeEVRVExgIHBhY2thZ2Ugd2hpY2ggaXMgZGVzaWduZWQgZm9yIGZhc3QgZVFUTCBhbmFseXNpcyBvbiBsYXJnZSBnZW5vbWljIGRhdGEgc2V0cy4gYE1hdHJpeEVRVExgIGNhbiB0ZXN0IGZvciBhc3NvY2lhdGlvbiBiZXR3ZWVuIGdlbm90eXBlIGFuZCBnZW5lIGV4cHJlc3Npb24gdXNpbmcgbGluZWFyIHJlZ3Jlc3Npb24gd2l0aCBlaXRoZXIgYWRkaXRpdmUgb3IgQU5PVkEgZ2Vub3R5cGUgZWZmZWN0cy4gVGhlIG1vZGVscyBjYW4gaW5jbHVkZSBjb3ZhcmlhdGVzIHRvIGFjY291bnQgZm9yIGZhY3RvcnMgYXMgcG9wdWxhdGlvbiBzdHJhdGlmaWNhdGlvbiwgZ2VuZGVyLCBhbmQgY2xpbmljYWwgdmFyaWFibGVzLgpJdCBhbHNvIHN1cHBvcnRzIG1vZGVscyB3aXRoIGhldGVyb3NjZWRhc3RpYyBhbmQvb3IgY29ycmVsYXRlZCBlcnJvcnMsIGZhbHNlIGRpc2NvdmVyeSByYXRlIGVzdGltYXRpb24gYW5kIHNlcGFyYXRlIHRyZWF0bWVudCBvZiBsb2NhbCAoY2lzKSBhbmQgZGlzdGFudCAodHJhbnMpIGVRVExzLiBZb3UgY2FuIGxlYXJuIG1vcmUgYWJvdXQgYE1hdHJpeEVRVExgIFtoZXJlXShodHRwOi8vd3d3LmJpb3MudW5jLmVkdS9yZXNlYXJjaC9nZW5vbWljX3NvZnR3YXJlL01hdHJpeF9lUVRMLykuCgojIyMgSW1wb3J0aW5nIGFuZCBwcmVwcm9jZXNzaW5nIGdlbm90eXBlIGFuZCBleHByZXNzaW9uIGRhdGEKCkdlbm90eXBlIGFuZCBleHByZXNzaW9uIGRhdGEgY29tZSBpbiBhbGwgc29ydHMgb2YgZmxhdm91cnMgYW5kIHByZXByb2Nlc3Npbmcgb2YgdGhpcyBkYXRhIG5lZWRzIHRvIGJlIGRvbmUgcmF0aGVyIGNhcmVmdWxseS4gSW4gdGhpcyBzaG9ydCBpbnRyb2R1Y3Rpb24gaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNvdmVyIHRoaXMgdG9waWMgaW4gZGV0YWlsLiBDb21tb24gaW5wdXQgZm9ybWF0cyBmb3IgZ2Vub3R5cGVzIGFyZSBWQ0YsIFBMSU5LIGZpbGVzLCBvciBldmVuIG90aGVyIGN1c3RvbSBmaWxlcyB3aGljaCBnaXZlIHRoZSBnZW5vdHlwZSBvZiBlYWNoIHNhbXBsZSBvbiBhbGwgcXVlcmllZCBnZW5vbWljIHBvc2l0aW9ucy4gRXhwcmVzc2lvbiBkYXRhIGNhbiBhbHNvIGJlIG1hZGUgYXZhaWxhYmxlIGluIHZhcmlvdXMgZm9ybWF0cyBkZXBlbmRpbmcgb24gdGhlIHVuZGVybHlpbmcgdGVjaG5vbG9neSAoUk5Bc2VxIG9yIGV4cHJlc3Npb24gbWljcm8gYXJyYXkpLiBHb29kIHBvcnRpb24gb2YgcHVibGljbHkgYXZhaWxhYmxlIGVRVEwgZGF0YSBzZXRzIGFyZSwgc3RpbGwsIGZyb20gbWljcm9hcnJheSBleHBlcmltZW50cy4gCgojIyMgY2lzLWVRVEwgYW5kIHRyYW5zLWVRVEwgYW5hbHlzaXMKClRvIHBlcmZvcm0gYW4gZVFUTCBhbmFseXNpcyB3ZSBkb27igJl0IG9ubHkgbmVlZCB0byBrbm93IHRoZSBnZW5vdHlwZSBhbmQgZ2VuZSBleHByZXNzaW9uIHZhbHVlcyBmb3IgZXZlcnkgc2FtcGxlLCBidXQgYWxzbyB0aGUgZ2Vub21pYyBwb3NpdGlvbnMgb2YgZ2VuZXMgYW5kIFNOUHMuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGRlZmluZSB3aGljaCBTTlBzIHNob3VsZCBiZSB0ZXN0ZWQgYWdhaW5zdCB3aGljaCBnZW5lcy4gRm9yIGNpcy1lUVRMIGFuYWx5c2VzIFNOUHMgaW4gcHJveGltaXR5IHRvIHRoZSBnZW5lIGFyZSBjaG9zZW4gYW5kIGZvciB0cmFucy1lUVRMIGFuYWx5c2VzIFNOUHMgZnVydGhlciBhd2F5LCBvciBvbiBkaWZmZXJlbnQgY2hyb21vc29tZXMsIGFyZSB0YWtlbiBpbnRvIGFjY291bnQuIFRoZSB3aW5kb3cgaW4gY2lzLWVRVEwgYW5hbHlzaXMgaXMgY29tbW9ubHkgY2hvc2VuIHRvIGJlIDUwMGtiLTFNYiBtZWFzdXJlZCBmcm9tIGdlbmUncyBUU1MuCgojIyMjIEV4YW1wbGUKTm93IGxldCdzIGdvIHRocm91Z2ggYW4gZXhhbXBsZSBvZiBjaXMtIHRyYW5zLWVRVEwgbWFwcGluZyB3aXRoIGNocjIyX0dFVVZBRElTXzM1OF9jb250aW5lbnRhbCBkYXRhLgoKYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CiMgZVFUTCBtYXBwaW5nLCBjaXMvdHJhbnMsIG5vIHBjcwogIHN1cHByZXNzTWVzc2FnZXMobGlicmFyeShNYXRyaXhFUVRMKSkKCiAgCiAgU05QX2ZpbGVfbmFtZSA8LSAgIi9Vc2Vycy9pZ29yaHV0L0RvY3VtZW50cy9lUVRML0RhdGEvVm9qYV9RVExfdG9vbHMvU05QX3ZvamEudHh0IjsKICBzbnBzX2xvY2F0aW9uX2ZpbGVfbmFtZSA8LSAiL1VzZXJzL2lnb3JodXQvRG9jdW1lbnRzL2VRVEwvRGF0YS9Wb2phX1FUTF90b29scy9zbnBzbG9jX3ZvamEudHh0IjsKICBleHByZXNzaW9uX2ZpbGVfbmFtZSA8LSAiL1VzZXJzL2lnb3JodXQvRG9jdW1lbnRzL2VRVEwvRGF0YS9Wb2phX1FUTF90b29scy9HRV92b2phLnR4dCI7CiAgZ2VuZV9sb2NhdGlvbl9maWxlX25hbWUgPC0gIi9Vc2Vycy9pZ29yaHV0L0RvY3VtZW50cy9lUVRML0RhdGEvVm9qYV9RVExfdG9vbHMvZ2VuZWxvY192b2phLnR4dCI7CiAgY292YXJpYXRlc19maWxlX25hbWUgPC0gIi9Vc2Vycy9pZ29yaHV0L0RvY3VtZW50cy9lUVRML0RhdGEvVm9qYV9RVExfdG9vbHMvY292X3ZvamEudHh0IjsKICBjaXNfdGhyZXNob2xkIDwtIDFlLTUKICB0cmFuc190aHJlc2hvbGQgPC0gMWUtNQogIGNpc19kaXN0IDwtIDFlNgogIAogIAogICMgT3V0cHV0IGZpbGUgbmFtZQogIG91dHB1dF9maWxlX25hbWVfY2lzID0gdGVtcGZpbGUoKTsKICBvdXRwdXRfZmlsZV9uYW1lX3RyYSA9IHRlbXBmaWxlKCk7CiAgIyBvdXRwdXRfZmlsZV9uYW1lX2NpcyA9ICIvVXNlcnMvaWdvcmh1dC9Eb2N1bWVudHMvZVFUTC90b29sc19jb21wYXJpc29uX1JfcHJvai9vdXRwdXRfdm9qYV9jaXNfZXF0bHNfMS50eHQiOwogICMgb3V0cHV0X2ZpbGVfbmFtZV90cmEgPSAiL1VzZXJzL2lnb3JodXQvRG9jdW1lbnRzL2VRVEwvdG9vbHNfY29tcGFyaXNvbl9SX3Byb2ovb3V0cHV0X3ZvamFfdHJhbnNfZXF0bHNfMS50eHQiOwogIAogICMjIFNldHRpbmdzCiAgIyBMaW5lYXIgbW9kZWwgdG8gdXNlLCBtb2RlbEFOT1ZBLCBtb2RlbExJTkVBUiwgb3IgbW9kZWxMSU5FQVJfQ1JPU1MKICB1c2VNb2RlbCA9IG1vZGVsTElORUFSOyAjIG1vZGVsQU5PVkEsIG1vZGVsTElORUFSLCBvciBtb2RlbExJTkVBUl9DUk9TUwoKICAjIE9ubHkgYXNzb2NpYXRpb25zIHNpZ25pZmljYW50IGF0IHRoaXMgbGV2ZWwgd2lsbCBiZSBzYXZlZAogIHB2T3V0cHV0VGhyZXNob2xkX2NpcyA9IGNpc190aHJlc2hvbGQ7CiAgcHZPdXRwdXRUaHJlc2hvbGRfdHJhID0gdHJhbnNfdGhyZXNob2xkOwogIAogICMgU2V0IHRvIGNoYXJhY3RlcigpIGZvciBubyBjb3ZhcmlhdGVzCiAgIyBjb3ZhcmlhdGVzX2ZpbGVfbmFtZSA9IGNoYXJhY3RlcigpOwogIAogICMgRXJyb3IgY292YXJpYW5jZSBtYXRyaXgKICAjIFNldCB0byBudW1lcmljKCkgZm9yIGlkZW50aXR5LgogIGVycm9yQ292YXJpYW5jZSA9IG51bWVyaWMoKTsKICAKICAjIERpc3RhbmNlIGZvciBsb2NhbCBnZW5lLVNOUCBwYWlycwogIGNpc0Rpc3QgPSBjaXNfZGlzdAogIAogICMjIExvYWQgZ2Vub3R5cGUgZGF0YQogIHNucHMgPSBTbGljZWREYXRhJG5ldygpOwogIHNucHMkZmlsZURlbGltaXRlciA9ICJcdCI7ICMgdGhlIFRBQiBjaGFyYWN0ZXIKICBzbnBzJGZpbGVPbWl0Q2hhcmFjdGVycyA9ICJOQSI7ICMgZGVub3RlIG1pc3NpbmcgdmFsdWVzOwogIHNucHMkZmlsZVNraXBSb3dzID0gMTsgIyBvbmUgcm93IG9mIGNvbHVtbiBsYWJlbHMKICBzbnBzJGZpbGVTa2lwQ29sdW1ucyA9IDE7ICMgb25lIGNvbHVtbiBvZiByb3cgbGFiZWxzCiAgc25wcyRmaWxlU2xpY2VTaXplID0gMjAwMDsgIyByZWFkIGZpbGUgaW4gc2xpY2VzIG9mIDIsMDAwIHJvd3MKICBzbnBzJExvYWRGaWxlKFNOUF9maWxlX25hbWUpOwogIAogICMjIExvYWQgZ2VuZSBleHByZXNzaW9uIGRhdGEKICBnZW5lID0gU2xpY2VkRGF0YSRuZXcoKTsKICBnZW5lJGZpbGVEZWxpbWl0ZXIgPSAiXHQiOyAjIHRoZSBUQUIgY2hhcmFjdGVyCiAgZ2VuZSRmaWxlT21pdENoYXJhY3RlcnMgPSAiTkEiOyAjIGRlbm90ZSBtaXNzaW5nIHZhbHVlczsKICBnZW5lJGZpbGVTa2lwUm93cyA9IDE7ICMgb25lIHJvdyBvZiBjb2x1bW4gbGFiZWxzCiAgZ2VuZSRmaWxlU2tpcENvbHVtbnMgPSAxOyAjIG9uZSBjb2x1bW4gb2Ygcm93IGxhYmVscwogIGdlbmUkZmlsZVNsaWNlU2l6ZSA9IDIwMDA7ICMgcmVhZCBmaWxlIGluIHNsaWNlcyBvZiAyLDAwMCByb3dzCiAgZ2VuZSRMb2FkRmlsZShleHByZXNzaW9uX2ZpbGVfbmFtZSk7CiAgCiAgIyMgTG9hZCBjb3ZhcmlhdGVzCiAgY3ZydCA9IFNsaWNlZERhdGEkbmV3KCk7CiAgY3ZydCRmaWxlRGVsaW1pdGVyID0gIlx0IjsgIyB0aGUgVEFCIGNoYXJhY3RlcgogIGN2cnQkZmlsZU9taXRDaGFyYWN0ZXJzID0gIk5BIjsgIyBkZW5vdGUgbWlzc2luZyB2YWx1ZXM7CiAgY3ZydCRmaWxlU2tpcFJvd3MgPSAxOyAjIG9uZSByb3cgb2YgY29sdW1uIGxhYmVscwogIGN2cnQkZmlsZVNraXBDb2x1bW5zID0gMTsgIyBvbmUgY29sdW1uIG9mIHJvdyBsYWJlbHMKICBpZihsZW5ndGgoY292YXJpYXRlc19maWxlX25hbWUpPjApIHsKICAgIGN2cnQkTG9hZEZpbGUoY292YXJpYXRlc19maWxlX25hbWUpOwogIH0KICAKICAjIyBSdW4gdGhlIGFuYWx5c2lzCiAgc25wc3BvcyA9IHJlYWQudGFibGUoc25wc19sb2NhdGlvbl9maWxlX25hbWUsIGhlYWRlciA9IFRSVUUsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSk7CiAgZ2VuZXBvcyA9IHJlYWQudGFibGUoZ2VuZV9sb2NhdGlvbl9maWxlX25hbWUsIGhlYWRlciA9IFRSVUUsIHN0cmluZ3NBc0ZhY3RvcnMgPSBGQUxTRSk7CiAgCm1lID0gTWF0cml4X2VRVExfbWFpbigKICBzbnBzID0gc25wcywKICBnZW5lID0gZ2VuZSwKICBjdnJ0ID0gY3ZydCwKICBvdXRwdXRfZmlsZV9uYW1lID0gb3V0cHV0X2ZpbGVfbmFtZV90cmEsCiAgcHZPdXRwdXRUaHJlc2hvbGQgPSBwdk91dHB1dFRocmVzaG9sZF90cmEsCiAgdXNlTW9kZWwgPSB1c2VNb2RlbCwKICBlcnJvckNvdmFyaWFuY2UgPSBlcnJvckNvdmFyaWFuY2UsCiAgdmVyYm9zZSA9IEZBTFNFLAogIG91dHB1dF9maWxlX25hbWUuY2lzID0gb3V0cHV0X2ZpbGVfbmFtZV9jaXMsCiAgcHZPdXRwdXRUaHJlc2hvbGQuY2lzID0gcHZPdXRwdXRUaHJlc2hvbGRfY2lzLAogIHNucHNwb3MgPSBzbnBzcG9zLAogIGdlbmVwb3MgPSBnZW5lcG9zLAogIGNpc0Rpc3QgPSBjaXNEaXN0LAogIHB2YWx1ZS5oaXN0ID0gVFJVRSwKICBtaW4ucHYuYnkuZ2VuZXNucCA9IEZBTFNFLAogIG5vRkRSc2F2ZU1lbW9yeSA9IEZBTFNFKTsKICAKICBtZV9xcSA9IE1hdHJpeF9lUVRMX21haW4oCiAgICBzbnBzID0gc25wcywKICAgIGdlbmUgPSBnZW5lLAogICAgY3ZydCA9IGN2cnQsCiAgICBvdXRwdXRfZmlsZV9uYW1lID0gb3V0cHV0X2ZpbGVfbmFtZV90cmEsCiAgICBwdk91dHB1dFRocmVzaG9sZCA9IHB2T3V0cHV0VGhyZXNob2xkX3RyYSwKICAgIHVzZU1vZGVsID0gdXNlTW9kZWwsCiAgICBlcnJvckNvdmFyaWFuY2UgPSBlcnJvckNvdmFyaWFuY2UsCiAgICB2ZXJib3NlID0gRkFMU0UsCiAgICBvdXRwdXRfZmlsZV9uYW1lLmNpcyA9IG91dHB1dF9maWxlX25hbWVfY2lzLAogICAgcHZPdXRwdXRUaHJlc2hvbGQuY2lzID0gcHZPdXRwdXRUaHJlc2hvbGRfY2lzLAogICAgc25wc3BvcyA9IHNucHNwb3MsCiAgICBnZW5lcG9zID0gZ2VuZXBvcywKICAgIGNpc0Rpc3QgPSBjaXNEaXN0LAogICAgcHZhbHVlLmhpc3QgPSAicXFwbG90IiwKICAgIG1pbi5wdi5ieS5nZW5lc25wID0gRkFMU0UsCiAgICBub0ZEUnNhdmVNZW1vcnkgPSBGQUxTRSkKICAKICB1bmxpbmsob3V0cHV0X2ZpbGVfbmFtZV90cmEpOwogIHVubGluayhvdXRwdXRfZmlsZV9uYW1lX2Npcyk7CiAgCiAgY2F0KCdBbmFseXNpcyBkb25lIGluOiAnLCBtZSR0aW1lLmluLnNlYywgJyBzZWNvbmRzJywgJ1xuJyk7CiAgaGVhZChtZSRjaXMkZXF0bHMpCiAgaGVhZChtZSR0cmFucyRlcXRscykKICAKICAjIyBNYWtlIHRoZSBoaXN0b2dyYW0gb2YgbG9jYWwgYW5kIGRpc3RhbnQgcC12YWx1ZXMKICBwbG90KG1lKQogIAogICMjIE1ha2UgdGhlIHFxLXBsb3Qgb2YgbG9jYWwgYW5kIGRpc3RhbnQgcC12YWx1ZXMKICBwbG90KG1lX3FxKSAgCgpgYGAKCgojIyMgTXVsdGlwbGUgdGVzdGluZyBjb3JyZWN0aW9uCldoZW5ldmVyIG11bHRpcGxlIHN0YXRpc3RpY2FsIHRlc3RzIGFyZSBwZXJmb3JtZWQsIGEgbXVsdGlwbGUgdGVzdGluZyBjb3JyZWN0aW9uIGhhcyB0byBiZSBwZXJmb3JtZWQuIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgbWFueSBoeXBvdGhlc2VzIGFyZSB0ZXN0ZWQuIFRoZXJlZm9yZSBlYWNoIGNhbGN1bGF0ZWQgYXNzb2NpYXRpb24gcC12YWx1ZSBoYXMgdG8gYmUgY29ycmVjdGVkIGZvciBtdWx0aXBsZSB0ZXN0aW5nLiBgTWF0cml4RVFUTGAgZG9lcyB0aGlzIGZvciB5b3UgYXV0b21hdGljYWxseSBhbmQgcmV0dXJucyB0aGUgY29ycmVjdGVkIHAtdmFsdWUgYXMgYSBmYWxzZSBkaXNjb3ZlcnkgcmF0ZSAoRkRSKS4gQ29tbW9uIHRocmVzaG9sZHMgb24gRkRSIGFyZSA1JSBvciAxMCUuCgojIyBJbnRlcnByZXRpbmcgZVFUTCByZXN1bHRzCgojIyMgTGlua2FnZSBkaXNlcXVpbGlicml1bSAoTEQpCkxpbmthZ2UgZGlzZXF1aWxpYnJpdW0gKExEKSBpcyBhIHZlcnkgaW1wb3J0YW50IGVmZmVjdCB0aGF0IHBsYXlzIGEgYmlnIHJvbGUgaW4gZ2VuZXRpYyBhc3NvY2lhdGlvbiBzdHVkaWVzLiBJdCBkZXNjcmliZXMgdGhlIGZhY3QgdGhhdCBnZW5ldGljIHZhcmlhbnRzIGFyZSBub3QgYWx3YXlzIGluaGVyaXRlZCBpbmRlcGVuZGVudGx5IGR1ZSB0byByZWNvbWJpbmF0aW9uIHBhdHRlcm5zIGR1cmluZyByZXByb2R1Y3Rpb24uIFNOUHMgaW4gTEQgYXJlIGluaGVyaXRlZCBpbiBzaW1pbGFyIHBhdHRlcm5zIGFuZCB0aGVyZWZvcmUgY2FuIGV4cGxhaW4gZ2VuZQpleHByZXNzaW9uIGluIHNpbWlsYXIgd2F5cy4gVGhpcyBtZWFucyB0aGF0IExEIG1ha2VzIGl0IGhhcmRlciBmb3IgYXNzb2NpYXRpb24gc3R1ZGllcyB0byBpZGVudGlmeSBvbmUgc2luZ2xlIFNOUCBiZWluZyBhc3NvY2lhdGVkIHdpdGggYWx0ZXJlZCBnZW5lIGV4cHJlc3Npb24uIEFsc28gaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgY29tYmluYXRpb24gb2YgU05QcyAoYXMgYSBoYXBsb3R5cGUpIGNhdXNlcyBkaWZmZXJlbmNlcyBpbiBnZW5lIGV4cHJlc3Npb24gYW5kIG5vdCBvbmx5IG9uZSBzaW5nbGUgU05QLiBXYXRjaCB0aGlzIHZpZGVvIHdoaWNoIGV4cGxhaW5zIHRoZSBbYmFzaWNzIG9mIExEXShodHRwczovL2VsZWFybmluZy5jcHAuZWR1L2xlYXJuaW5nLW9iamVjdHMvbGlua2FnZS1kaXNlcXVpbGlicml1bS8pLgoKIyMjIFNlbGVjdGluZyBlUVRMcwpDb21tb25seSBvbmUgc2VsZWN0cyBhdCBtb3N0IG9uZSBhc3NvY2lhdGVkIFNOUCBwZXIgZ2VuZS4gSWYgdGhlcmUgYXJlIG1hbnkgU05QcyBhc3NvY2lhdGVkIHdpdGggYSBnZW5lIGl0IGlzIG1vc3QgbGlrZWx5IHRoYXQgdGhvc2UgU05QcyBhcmUgaGlnaGx5IGxpbmtlZCB0byBlYWNoIG90aGVyICjigJxpbiBoaWdoIExE4oCdKSBhbmQgdGhlcmVmb3JlIHRoZXkgZGVzY3JpYmUgdGhlIHNhbWUgZWZmZWN0LiBUaGVyZSBhcmUgc3RpbGwgY2FzZXMgaW4gd2hpY2ggZ2VuZXMgYXJlIHJlZ3VsYXRlZCBieSBkaWZmZXJlbnQgU05QcyBpbmRlcGVuZGVudGx5LCB0aGlzIGNhbm5vdCBiZSByZWFkaWx5IGRldGVybWluZWQgZnJvbSB0aGUgdGFibGUgcHJvZHVjZWQgYnkgYE1hdHJpeEVRVExgLiBIZXJlIHdlIHdpbGwgbm90IHRyeSB0byBpZGVudGlmeSB0aGUgaW5kZXBlbmRlbnQgbGVhZCBlUVRMIHNpZ25hbHMuCgojIyMjIEV4YW1wbGUKTGV0J3MgaW5kZW50aWZ5IHdoaWNoIFNOUHMgYXJlIChzaWduaWZpY2FudGx5KSBhc3NvY2lhdGVkIHdpdGggd2hpY2ggZ2VuZXMgYXQgYQptYXhpbXVtIEZEUiBvZiA1JSBmcm9tIHRoZSBjaXMtZVFUTCByZXN1bHRzLiBXZSdsbCBwcmludCBhIHRhYmxlIGluIHdoaWNoIG9ubHkgdGhlIGxlYWQgU05QIHBlciBnZW5lIGlzIGdpdmVuLiBBbHNvIHdlJ2xsIGFkZCB0aGUgTUFGIGZvciBldmVyeSBTTlAgaW4gdGhlIHRhYmxlLgoKYGBge3IsIG1lc3NhZ2U9RkFMU0UsIHdhcm5pbmc9RkFMU0V9CmxpYnJhcnkoZHBseXIpCgpzbnBfdmFsdWVzID0gcmVhZC50YWJsZShTTlBfZmlsZV9uYW1lLCByb3cubmFtZXM9MSwgaGVhZGVyPVRSVUUpCnNucF92YWx1ZXMgPSBkYXRhLmZyYW1lKHNucHMgPSByb3duYW1lcyhzbnBfdmFsdWVzKSwgc25wX3ZhbHVlcywgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQoKdG9wX2VxdGxzID0gZmlsdGVyKG1lJGNpcyRlcXRscywgRkRSIDw9IDAuMDUpICU+JSAKICBhcnJhbmdlKEZEUikgJT4lIAogIGRpc3RpbmN0KGdlbmUsIC5rZWVwX2FsbCA9IFRSVUUpCgptYWZzID0gYXBwbHkoYXMubWF0cml4KHNucF92YWx1ZXNbLTFdKSwxLG1lYW4pLzIKbWFmcyA9IHBtaW4obWFmcywgMSAtIG1hZnMpCm1hZnMgPSBkYXRhLmZyYW1lKHNucHM9bmFtZXMobWFmcyksIG1hZiA9IG1hZnMpCnRvcF9lcXRscyA9IGxlZnRfam9pbih0b3BfZXF0bHMsIG1hZnMsIGJ5PSJzbnBzIikKaGVhZCh0b3BfZXF0bHMpCmBgYAoKV2hlbmV2ZXIgbXVsdGlwbGUgc3RhdGlzdGljYWwgdGVzdHMgYXJlIHBlcmZvcm1lZCwgYSBtdWx0aXBsZSB0ZXN0aW5nIGNvcnJlY3Rpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBjb21wZW5zYXRlIGZvciB0aGUgZXJyb3JzIHdoaWNoIGFyaXNlIGZyb20gbXVsdGlwbGUgaHlwb3RoZXNpcyB0ZXN0aW5nLiBUaGVyZWZvcmUgZWFjaCBjYWxjdWxhdGVkIGFzc29jaWF0aW9uIHAtdmFsdWUgaGFzIHRvIGJlIGNvcnJlY3RlZC4gTWF0cml4RVFUTCBkb2VzIHRoaXMgZm9yIHlvdSBhdXRvbWF0aWNhbGx5IGFuZCByZXR1cm5zIHRoZSBjb3JyZWN0ZWQgcC12YWx1ZSBhcyBhIGZhbHNlIGRpc2NvdmVyeSByYXRlIChGRFIpLiBDb21tb24gdGhyZXNob2xkcyBvbiBGRFIgYXJlIDUlIG9yIDEwJS4KCiMjIFByZXNlbnRpbmcgZVFUTCBhbmFseXNpcyByZXN1bHRzCgpUaGVyZSBhcmUgYSBmZXcgc3RhbmRhcmQgcGxvdHMgd2hpY2ggYXJlIGNvbW1vbiBpbiBlUVRMIGFuYWx5c2VzLiBXZSBhbHJlYWR5IHByb2R1Y2VkIG9uZSBvZiB0aGVtIGVhcmxpZXIgd2hlbiB3ZSBwbG90dGVkIGdlbmUgZXhwcmVzc2lvbiB2ZXJzdXMgZ2Vub3R5cGUuIFRoaXMgZ2l2ZXMgYSB2aXN1YWwgaW5zaWdodCBpbiBob3cgY2xlYXIgdGhlIGRhdGEgd2FzIGFuZCB3aGF0IHRoZSBsaW5lYXIgcmVncmVzc2lvbiBhY3R1YWxseSBkZXRlY3RlZC4KCiMjIyBHZW5lIGV4cHJlc3Npb24gdnMuIGdlbm90eXBlIGZvciB0aGUgZXF0bCB3aXRoIHRoZSBsb3dlc3QgYXNzb2NpYXRpb24gcC12YWx1ZQoKTGV0J3Mgbm93IHBsb3QgZ2VuZSBleHByZXNzaW9uIHZzLiBnZW5vdHlwZSBmb3IgdGhlIGVxdGwgd2l0aCB0aGUgbG93ZXN0IGFzc29jaWF0aW9uIEZEUi12YWx1ZS4gQWxzbyB3ZSB3aWxsIGFkZCBsaW5lYXIgcmVncmVzc2lvbiBsaW5lIGZvciB0aGlzIGlzb2xhdGVkIGNhc2UuCgpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KIyBGb3IgdGhpcyB3ZSBhbHNvIG5lZWQgZGYgd2l0aCBleHByZXNzaW9uIGRhdGEKZ2VuZV92YWx1ZXMgPSByZWFkLnRhYmxlKGV4cHJlc3Npb25fZmlsZV9uYW1lLCByb3cubmFtZXM9MSwgaGVhZGVyPVRSVUUpCmdlbmVfdmFsdWVzID0gZGF0YS5mcmFtZShnZW5lID0gcm93bmFtZXMoZ2VuZV92YWx1ZXMpLCBnZW5lX3ZhbHVlcywgc3RyaW5nc0FzRmFjdG9ycyA9IEZBTFNFKQoKdG9wX3NucCA9IHRvcF9lcXRscyRzbnBzWzFdCnRvcF9nZW5lID0gYXMuY2hhcmFjdGVyKHRvcF9lcXRscyRnZW5lWzFdKQoKdG9wX3NucF9kYXRhID0gZmlsdGVyKHNucF92YWx1ZXMsIHNucHMgPT0gdG9wX3NucCkKdG9wX2dlbmVfZGF0YSA9IGZpbHRlcihnZW5lX3ZhbHVlcywgZ2VuZSA9PSB0b3BfZ2VuZSkKCnBsb3RfZGF0YSA9IHQoYmluZF9yb3dzKHRvcF9zbnBfZGF0YVstMV0sIHRvcF9nZW5lX2RhdGFbLTFdKSkKY29sbmFtZXMocGxvdF9kYXRhKSA9IGMoInNucCIsICJnZW5lX2V4cHIiKQpwbG90X2RhdGEgPSBhcy5kYXRhLmZyYW1lKHBsb3RfZGF0YSkKcGxvdF9kYXRhJHNucCA9IGFzLmZhY3RvcihwbG90X2RhdGEkc25wKQpoZWFkKHBsb3RfZGF0YSkKCmxtX3RvcCA9IGxtKHBsb3RfZGF0YVssImdlbmVfZXhwciJdIH4gYXMubnVtZXJpYyhwbG90X2RhdGFbLCJzbnAiXSkpCnN1bW1hcnkobG1fdG9wKQoKcGxvdChwbG90X2RhdGEsIGNvbD0ic3RlZWxibHVlIiwgCiAgICAgbWFpbiA9IHBhc3RlMCh0b3BfZ2VuZSwgIiB2cyAiLCB0b3Bfc25wKSkKYWJsaW5lKGxtX3RvcCwgY29sPSJkYXJrb3JhbmdlIiwgbHdkID0gMiwgbHR5ID0gMikKeV9yYW5nZSA9IHJhbmdlKHBsb3RfZGF0YVssImdlbmVfZXhwciJdKQogIHRleHQoeD0yLCB5PXlfcmFuZ2VbMV0gKyAwLjUqZGlmZih5X3JhbmdlKSwgcGFzdGUwKCJwPSIsCiAgZm9ybWF0KHN1bW1hcnkobG1fdG9wKSRjb2VmZmljaWVudHNbMiw0XSwKICBzY2VudGlmaWM9VFJVRSwgZGlnaXRzPTIpKSwgY29sID0gImRhcmtvcmFuZ2UiKQoKYGBgCgoKIyMjIE1hbmhhbnR0YW4gcGxvdHMKCk1hbmhhdHRhbiBwbG90cyBhcmUgYSB3YXkgdG8gZGVwaWN0IGFzc29jaWF0aW9uIHAtdmFsdWVzIG9mIG11bHRpcGxlIFNOUHMgYXQgb25jZS4gVGhleSBhcmUgYWxzbyB2ZXJ5IGNvbW1vbiBpbiBHV0FTLiBNYW5oYXR0YW4gcGxvdHMgYXJlIGEgcmF0aGVyIGNvbnZpbmllbnQgbW9kYWxpdHkgZm9yIGludGVycHJldGF0aW9uIG9mIGVRVEwgc2lnbmFscyBpbiB0ZXJtcyBvZiBMRC4KCkxldCdzIG5vdyBnZW5lcmF0ZSBhIG1hbmhhdHRhbiBwbG90IGZvciBnZW5lIEVOU0cwMDAwMDE3MjQwNC40LCBwbG90dGluZyB0aGUgYmFzZS1wYWlyIHBvc2l0aW9uIG9uIHRoZSAqeC1heGlzKiBhbmQgdGhlICQtbG9nX3sxMH0ocHZhbHVlKSQgb2YgdGhlIFNOUCBpbiB0aGUgKnkqIGF4aXMuIE1hbmhhdHRhbiBwbG90cyB1c3VhbGx5IGRlcGljdCBhbGwgdGVzdGVkIFNOUHMsIG5vdCBvbmx5IHRoZSBvbmVzIHBhc3NpbmcgYSBjZXJ0YWluIHAtdmFsdWUgdGhyZXNob2xkLiBUaGVyZWZvcmUgd2UnbGwgZmlyc3Qgb2J0YWluIGFsbCB0aGUgYXNzb2NpYXRpb24gcC12YWx1ZXMgZm9yIGFsbCB0ZXN0ZWQgU05QcyBmb3IgZ2VuZSBFTlNHMDAwMDAxNzI0MDQuNC4KCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQoKZ2VuZV9pZCA9ICJFTlNHMDAwMDAxNzI0MDQuNCIKCmdlbmVfdmFsdWVzID0gcmVhZC50YWJsZShleHByZXNzaW9uX2ZpbGVfbmFtZSwgcm93Lm5hbWVzPTEsIGhlYWRlcj1UUlVFKQpzaW5nbGVfZ2VuZV9leHAgPSBTbGljZWREYXRhJG5ldygpCnNpbmdsZV9nZW5lX2V4cCRDcmVhdGVGcm9tTWF0cml4KGFzLm1hdHJpeChnZW5lX3ZhbHVlc1tnZW5lX2lkLCAsIGRyb3A9RkFMU0VdKSkKc2luZ2xlX2dlbmVfZXhwCgpzbnBzcG9zID0gcmVhZC50YWJsZShzbnBzX2xvY2F0aW9uX2ZpbGVfbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCgpnZW5lcG9zID0gcmVhZC50YWJsZShnZW5lX2xvY2F0aW9uX2ZpbGVfbmFtZSwgCiAgICAgICAgICAgICAgICAgICAgIGhlYWRlciA9IFRSVUUsIAogICAgICAgICAgICAgICAgICAgICBzdHJpbmdzQXNGYWN0b3JzID0gRkFMU0UpCgpzaW5nbGVfY2lzX2VxdGxfcmVzID0gTWF0cml4X2VRVExfbWFpbihzbnBzLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlX2dlbmVfZXhwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NlID0gRkFMU0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9maWxlX25hbWUuY2lzID0gTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2ZpbGVfbmFtZSA9IE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB2T3V0cHV0VGhyZXNob2xkLmNpcz0xLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25wc3BvcyA9IHNucHNwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVwb3MgPSBnZW5lcG9zKQoKbWFuaF9kYXRhID0gbWVyZ2Uoc2luZ2xlX2Npc19lcXRsX3JlcyRjaXMkZXF0bHMsIHNucHNwb3MsIGJ5LnggPSAic25wcyIsIGJ5LnkgPSAic25pcGlkIikKbWFuaF9kYXRhID0gbWFuaF9kYXRhIFssYygicG9zIiwgImNociIsICJwdmFsdWUiLCAic25wcyIpXQpoZWFkKG1hbmhfZGF0YSkKIyBQbG90IHRoZSBNYW5oYXR0YW5wbG90CndpdGgobWFuaF9kYXRhICxwbG90KHBvcywgLWxvZzEwKHB2YWx1ZSksIHhsYWIgPSAiZ2Vub21pYyBwb3NpdGlvbiAoYnApIiwKbWFpbj1wYXN0ZShnZW5lX2lkLCAiYXNzb2NpYXRlZCBTTlBzIikpKQojIEhpZ2hsaWdodCB0aGUgbGVhZCBTTlAKd2l0aChtYW5oX2RhdGFbd2hpY2gubWluKG1hbmhfZGF0YSRwdmFsdWUpLCxkcm9wPUZBTFNFXSAsCnBvaW50cyhwb3MsIC1sb2cxMChwdmFsdWUpLCBwY2g9MjAsIGNvbD0icmVkIikpCiMgQWRkIGEgbGFiZWwgdG8gdGhlIGxlYWQgU05QCndpdGgobWFuaF9kYXRhW3doaWNoLm1pbihtYW5oX2RhdGEkcHZhbHVlKSwsZHJvcD1GQUxTRV0sCnRleHQocG9zICsgZGlmZihyYW5nZShtYW5oX2RhdGEkcG9zKSkqMC4yLCAtbG9nMTAocHZhbHVlKSwgbGFiZWxzID0gc25wcykpCmBgYAoKTm93IHByb2R1Y2UgbWFuaGF0dGFuIHBsb3RzIGZvciB0aGUgdG9wIDMgY2lzLWVRVEwgcmVzdWx0cyBhbmQgZm9yIHRoZSBib3R0b20gMyBjaXMtZVFUTCBpbiB0aGUgYHRvcF9lcXRsc2AgbWF0cml4IHdlIGhhdmUgY3JlYXRlZCBlYXJsaWVyLiAKCmBgYHtyLCBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFfQpmb3IgKGdlbmVfaWQgaW4gdG9wX2VxdGxzJGdlbmVbYygxOjMsKG5yb3codG9wX2VxdGxzKS0zKTpucm93KHRvcF9lcXRscykpXSl7CiAgcHJpbnQoZ2VuZV9pZCkKICBzaW5nbGVfZ2VuZV9leHAgPSBTbGljZWREYXRhJG5ldygpCiAgc2luZ2xlX2dlbmVfZXhwJENyZWF0ZUZyb21NYXRyaXgoYXMubWF0cml4KGdlbmVfdmFsdWVzW2dlbmVfaWQsLCBkcm9wPUZBTFNFXSkpCiAgCiAgc2luZ2xlX2Npc19lcXRsX3JlcyA9IE1hdHJpeF9lUVRMX21haW4oc25wcywgc2luZ2xlX2dlbmVfZXhwLAogICAgICBvdXRwdXRfZmlsZV9uYW1lLmNpcyA9IE5VTEwsCiAgICAgIG91dHB1dF9maWxlX25hbWUgPSBOVUxMLAogICAgICBwdk91dHB1dFRocmVzaG9sZC5jaXM9MSwKICAgICAgdmVyYm9zZSA9IEZBTFNFLAogICAgICBzbnBzcG9zPXNucHNwb3MsCiAgICAgIGdlbmVwb3M9Z2VuZXBvcykKICAKICBtYW5oX2RhdGEgPSBtZXJnZShzaW5nbGVfY2lzX2VxdGxfcmVzJGNpcyRlcXRsLCAKICAgICAgICAgICAgICAgICAgICBzbnBzcG9zLCAKICAgICAgICAgICAgICAgICAgICBieS54PSJzbnBzIiwgCiAgICAgICAgICAgICAgICAgICAgYnkueSA9ICJzbmlwaWQiKQogIG1hbmhfZGF0YSA9bWFuaF9kYXRhWyxjKCJwb3MiLCAiY2hyIiwgInB2YWx1ZSIsICJzbnBzIildCiAgcGFyKG1mcm93PWMoMSwxKSkKICAjIFBsb3QgdGhlIE1hbmhhdHRhbnBsb3QKICB3aXRoKG1hbmhfZGF0YSAscGxvdChwb3MsIC1sb2cxMChwdmFsdWUpLCB4bGFiID0gImdlbm9taWMgcG9zaXRpb24gKGJwKSIsCiAgbWFpbj1wYXN0ZShnZW5lX2lkLCAiYXNzb2NpYXRlZCBTTlBzIikpKQogICMgSGlnaGxpZ2h0IHRoZSBsZWFkIFNOUAogIHdpdGgobWFuaF9kYXRhW3doaWNoLm1pbihtYW5oX2RhdGEkcHZhbHVlKSwsZHJvcD1GQUxTRV0gLAogIHBvaW50cyhwb3MsIC1sb2cxMChwdmFsdWUpLCBwY2g9MjAsIGNvbD0icmVkIikpCiAgIyBBZGQgYSBsYWJlbCB0byB0aGUgbGVhZCBTTlAKICB3aXRoKG1hbmhfZGF0YVt3aGljaC5taW4obWFuaF9kYXRhJHB2YWx1ZSksLGRyb3A9RkFMU0VdLAogIHRleHQocG9zICsgZGlmZihyYW5nZShtYW5oX2RhdGEkcG9zKSkqMC4yLCAtbG9nMTAocHZhbHVlKSwgbGFiZWxzID0gc25wcykpCiAgc2NhbihzdGRpbigpKQp9CmBgYAoKCk1vc3RseSB0aGVyZSBpcyBhIHZlcnkgY2xlYXIgZVFUTCBzaWduYWwgdmlzaWJsZSwgaS5lLiBhIGRpc3RpbmN0IHBlYWsuIFZhcmlhbnRzIHdoaWNoIGFyZSBzaW1pbGFyIGluIOKAnGhlaWdodOKAnSBhcyB0aGUgbGVhZCBjaXMtZVFUTCBTTlAsIGJ1dCBsb3dlciBhcmUgbW9zdCBsaWtlbHkgU05QcyBpbiBMRCB3aXRoIHRoZSBsZWFkIFNOUC4gSW4gc29tZSBjYXNlcyBob3Jpem9udGFsIGxpbmVzIChjaHVua3MpIGJlY29tZSB2aXNpYmxlIHdoaWNoIG1lYW5zIHRoYXQgdGhvc2UgdmFyaWFudHMgYXJlIGluIHZlcnkgaGlnaCBMRCBhbW9uZyBlYWNoIG90aGVyLCBpLmUuIHRoZXkgYXJlIHVzdWFsbHkgaW5oZXJpdGVkIHRvZ2V0aGVyLiBXaGVuIHZhcmlhbnRzIGFyZSBpbiB2ZXJ5IGhpZ2ggTEQgKGhvcml6b250YWwgbGluZXMpIHRoZWlyIGltcG9ydGFuY2UgZm9yIGdlbmUgZXhwcmVzc2lvbiBjYW5ub3QgYmUgZGlzdGluZ3Vpc2hlZC4gT3RoZXIgbWV0aG9kcyBzdWNoIGFzIGZpbmUgbWFwcGluZyB0cnkgdG8gdXNlIGluZm9ybWF0aW9uIGxpa2UgZ2Vub21lIHNlZ21lbnRhdGlvbiB0byBicmVhayB0aGUgTEQgYmxvY2tzIGludG8gc21hbGxlciBmcmFjdGlvbnMgb2YgYmVpbmcgbW9yZSBvciBsZXNzIGxpa2VseSBjYXVzYWwuCgojIyMgZVFUTCBTTlAgZGlzdGFuY2UgZnJvbSB0aGUgVFNTClVzdWFsbHkgY2lzLWVRVEwgU05QcyBhcmUgbG9jYXRlZCBhcm91bmQgdGhlIHRyYW5zY3JpcHRpb24gc3RhcnRpbmcgc2l0ZSAoVFNTKSBvZiB0aGUgYXNzb2NpYXRlZCBnZW5lLiBEZXBlbmRpbmcgb24gdGhlIGRhdGFzZXQgdGhlcmUgbWF5IGJlIGEgc2xpZ2h0IGJpYXMgdG8gbW9yZSBhc3NvY2lhdGlvbnMgdXBzdHJlYW0gdGhlIFRTUy4gV2hlbiBsb29raW5nIGF0IHRoZSBTTlAgcG9zaXRpb25zIHJlbGF0aXZlIHRvIHRoZSBUU1Mgb25lIGhhcyB0byB0YWtlIHRoZSBzdHJhbmQgb2YgdGhlIGdlbmUgaW50byBhY2NvdW50LCBhcyB1cC0gYW5kIGRvd25zdHJlYW0gYXJlIGFsd2F5cyByZWxhdGl2ZSB0byB0aGUgc3RyYW5kIHRoZSBnZW5lIGxpZXMgb24uIAoKIVtEaXN0YW5jZSBkaXN0cmlidXRpb24gb2YgY2lz4oiSZVFUTHMuXSh0c3NfZGlzdGFuY2VfcGxvdC5wbmcpCgojIyBPdGhlciAoZSlRVEwgY2FsbGluZyBhbGdvcml0aG1zCgoKIyMgZVFUTCBhbmFseXNpcyBpbiBwaGFybWFjeSBhbmQgbWVkaWNpbmUKCmh0dHBzOi8vd3d3Lm5jYmkubmxtLm5paC5nb3YvcG1jL2FydGljbGVzL1BNQzQxNDA0NjAvCmh0dHA6Ly9vbmxpbmVsaWJyYXJ5LndpbGV5LmNvbS9kb2kvMTAuMTExMS9qdGguMTM2MzkvZnVsbApodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUM0NDc5MDc1LwpodHRwczovL3d3dy5uY2JpLm5sbS5uaWguZ292L3BtYy9hcnRpY2xlcy9QTUM0NTgwOTg2Lw==